육감적 코딩

Environment 2부. 프로퍼티 본문

정리/Spring

Environment 2부. 프로퍼티

감감감감감감 2021. 11. 16. 17:36

프로퍼티

Environment가 제공하는 두 번째 기능인 프로퍼티에 대해 알아보겠습니다.

이 기능은 애플리케이션에 등록되어있는 여러가지 key-value 쌍으로 제공되는 프로퍼티에 접근 할 수 있는 기능입니다.

기본적으로 계층형으로 접근합니다. 여기서 말하는 계층형이란 우선순위가 존재 한다는 뜻입니다.

프로퍼티는 여러가지 소스가 있는데 여러가지 형태로 제공될 수 있습니다. key-value 쌍으로 OS에있는 환경변수, 자바 애플리케이션을 실행할 때 넘겨주는 전 시간에 해본 -d 옵션으로 넘겨주는 프로퍼티들 등 다양합니다.

그럼, 프로퍼티어떻게 설정하고 어떻게 접근하는가?

1. VM obtions

pro1

VM options에

-D 옵션으로 넣어줄 수 있습니다.

2. properties 파일 만들기

resources 경로 밑에 프로퍼티파일을 만든 뒤,

resources/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("classpath:/app.properties") 라고 설정합니다.

프로퍼티 확인 1.

getProperty

Environment 객체의 getProperty메소드를 이용해서 프로퍼티 값을 가져올 수 있습니다.

getProperty 메소드를 이용하면 key에 해당하는 값을 가져올 수 있습니다.

Environment environment = ctx.getEnvironment();
System.out.println(environment.getProperty("app.name"));
System.out.println(environment.getProperty("app.about"));

pro2

프로퍼티 확인2.

@Value

@Value 어노테이션을 사용해서 값을 가져올 수도 있다. key에 해당하는 값을 가져온다.

resources/app.properties

app.about=myValue
@Component
public class AppRunner implements ApplicationRunner {

    @Value("${app.about}")
    String about;

    @Override
    public void run(ApplicationArguments args) throws Exception {

        System.out.println(about);

    }
}

pro3

VM options VS .properties 파일

두 설정 방법 중 어떤 설정방법이 더 우선순위가 높을까요?

알아보기위해 코드를 수정해 줍니다.

resources/app.properties

app.name=spring

VM options는 그대로

-Dapp.name=spring5

Environment environment = ctx.getEnvironment();
System.out.println(environment.getProperty("app.name"));

pro4

VM options의 우선순위가 더 높은걸 확인할 수 있습니다.

Comments