반응형

[Spring] 스프링 프로퍼티(Spring Property)를 통한 환경 설정(Spring Environment Configuration, Property)

반응형

| 스프링 프로퍼티(Spring Property)를 통한 환경 설정


스프링에서는 프로퍼티를 통해 다양한 방법으로 설정값을 정의할 수 있다. 이 설정값은 Environment 객체를 통해 가져올 수 있으며, 가져올 수 있는 값은 프로퍼티 소스 설정 및 프로퍼티 값이다.


프로퍼티에는 우선순위가 있으므로 같은 이름의 프로퍼티가 있을 경우 가장 우선순위가 높은 프로터티 설정값으로 사용하게 된다. 다음은 프로퍼티 우선순위에 대한 내용이다. (위에서 아래로 우선순위가 낮아짐)


1. ServletConfig 매개변수

2. ServletContext 매개변수

3. JNDI (java:comp/env/)

4. JVM 시스템 프로퍼티 (-Dkey="value")

5. JVM 시스템 환경 변수

6. 사용자 프로퍼티 설정파일


| JVM 옵션을 통한 프로퍼티 값 설정


JVM에 다음과 같은 옵션을 준다.

-Dapp.name="good"

이 프로퍼티값을 읽어오려면 Environment 객체를 컨테이너에서 추출한 후 getProperty 메서드를 사용하여 불러올 수 있다.

@Component
public class AppRunner implements ApplicationRunner {

@Autowired
ApplicationContext ctx;

@Autowired
BookRepository bookRepository;

@Override
public void run(ApplicationArguments args) throws Exception {
Environment environment = ctx.getEnvironment();
System.out.println(environment.getProperty("app.name"));
}
}

good


| @PropertySource를 통한 프로퍼티값 설정


.properties 확장자를 가진 설정파일을 통해 설정값을 작성한 후 스프링 가동시 @PropertySource 어노테이션을 통해 이 파일을 불러들여 그 파일에 저장된 프로퍼티값을 사용하는 것도 가능하다.

# app.properties
app.about=spring
@SpringBootApplication
@PropertySource("classpath:/app.properties")
public class SpringTutorialApplication {

public static void main(String[] args) {
SpringApplication.run(SpringTutorialApplication.class, args);
}
}
@Component
public class AppRunner implements ApplicationRunner {

@Autowired
ApplicationContext ctx;

@Autowired
BookRepository bookRepository;

@Override
public void run(ApplicationArguments args) throws Exception {
Environment environment = ctx.getEnvironment();
System.out.println(environment.getProperty("app.about"));
}
}
spring



반응형

이 글을 공유하기

댓글

Designed by JB FACTORY