Property
- 다양한 방법으로 정의할 수 있는 설정값
- Environment의 역할은 프로퍼티 소스 설정 밒 프로퍼티 값 가져오기
Property는 Application에 등록는 여러가지 key, value 쌍으로 제공되는 property에 접근할 수 있는 기능으로 계층형으로 접근한다.
* 여기서 계층형이란 우선순위가 있다는 뜻
StandardServletEnvironment의 우선순위
- ServletConfig 매개변수
- ServletContext 매개변수
- JNDI (java.comp/env/)
- JVM 시스템 프로퍼티 (-Dkey = "value")
- JVM 시스템 환경 변수 (운영 체제 환경 변수)
Property는 여러가지 key,value 쌍의 형태로 제공될 수 있는데 key,value는 OS에 있는 환경변수, java application을 실행할 때 -D 옵션으로 넘겨주는 property들, subletcontext, subletconfig에 들어갈 수도 있다.
VM option으로는 -Dapp.name = spring5 이렇게 줄 수 있고, 이렇게 준 property를 사용하는 방법은
@Override
public void run(ApplicationArguments args) throws Exception{
Environment environment = ctx.getEnvironment();
System.out.println(environment.getProperty("app.name"));
}
environment에 있는 getProperty()라는 걸 써서 출력해보면 위에서 설정한 spring5가 출력되는 것을 확인할 수 있다.
다른 방법으로 체계적으로 값을 전달하고 싶을 때는 properties 파일을 만들어서 사용할 수 있다.
app.properties라는 파일을 생성하고 안에 app.about = spring이라고 써놓겠다.
그 후
@SpringBootApplication
@PropertySource("classpath:/app.properties")
public class Demospring51Application{
public static void main(String[] args){
SpringApplication.run(Demospring51Application.class, args);
}
}
@propertySource에 넣어서 environment에 넣고 꺼내 쓸 수 있다.
VM option에 app.name = spring5
생성한 파일에 app.name = spring
작성해주고 실행하면 계층구조에 따라 우선순위가 높은 값이 나오게 된다.
위의 경우에는 VM option으로 준 spring5가 결과로 출력된다.
후에 Springboot를 배우면 그 쪽으로도 실행이 가능하다.
스프링부트의 외부 설정 참고
- 기본 프로퍼티 소스 지원 (application.properties)
- 프로파일까지 고려한 계층형 프로퍼티 우선 순위 제공
'Programming > Java' 카테고리의 다른 글
[MQTT] window & linux mosquitto 설치 방법 (0) | 2021.01.29 |
---|---|
[MQTT] MQTT broker 종류 (0) | 2021.01.29 |
[Spring Framework] Bean의 Scope (0) | 2020.12.22 |
[Spring Framework] IOC Container (0) | 2020.12.06 |
[Spring Framework] AutoWired (0) | 2020.12.06 |
댓글