Spring/Spring_CoreTechnologies

SpringFrameWork CoreTechnition_section1_5부

whyWhale 2020. 11. 18.

Environment Profile 기능과 Property 기능

 

 

Profile 기능

 

 

 ApplicationContext는 Environment 상속 받고 있어 getEnvironment()를 사용할 수 있다.

 

가장 먼저 Environment  무언인가?

 

환경이라는 뜻으로 해석 할 수 있는데 말 그대로 각기 다른 환경마다 다르게 적용할 수 있는 빈들을 설정하는 것입니다.

예를 들어 테스트 환경에서 쓰이는 빈들 알파,베타,감마 버젼에 사용되는 빈들 또는 특정환경에서만 사용할 수 있게 빈들을 사용하는 것입니다..

 

그리하여 여러 빈들의 묶음을 Profile 라고 합니다.

 

 

 

먼저 BookRepository 라는 인터페이스를 만들고 TestConfiguration 라는 클래스를 만들고 작성합니다.

 

@profile(" profilename ")    profilename-> 이름을 설정하고 

editConfiuration 으로 가서 spring boot -> active Profile profilename 을 적어주면은 가능하다.

***

(Ultimate 버전이 아니면 editConfiuration -> vmOptional 에 -Dspring.profiles.active-"profilename " ) 적어주면 됩니다.

***

 

 

###  프로파일명 안에 ! ,&, | 의 연산 표기가 가능합니다!  < ! not & and | or 사용 가능

ex> !test ->  라고 하면 test 환경 프로파일명을 지정하지 않을 시 실행하는 환경입니다. ###

Property 기능

 

다양한 방법으로 설정 값을 정의할 수 있습니다.

Environment의 역할은 프로퍼티 소스 설정 및 값을 가져오는 것입니다.

 

프로퍼티란?

말 그래도 속성 값입니다. 

즉 application 에 등록되는 <key,value> 쌍으로 제공하는 프로퍼티를 접근하는 기능입니다.

        +접근은 계층형으로 합니다. (우선순위가 존재합니다)

        + Os 환경변수, 자바 에플리케이션 실행시 -D 로 프로퍼티, 서블릿 Config,Context ...,진디 등이 있습니다.

 

 

===예제 실행===

 

Run/Debug Configuration 으로 가면 vm options 에 -Dapp.name=설정할 이름 이라고 적고 

 위에서 있는 AppRunner 에 run 메소드안에 

 

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

 이렇게 적어주시면 설정할 이름 콘솔에 찍히게 됩니다.

 

또 다른 방법으로 resourece 파일 안에 app.properties 라는 파일을 만들고 app.about=spring 입력한 후 처음 maven 을 만들었을때 실행되는 메인 메소드가 있는 부분에 @SpringBootApplication  밑에 @PropertySource("classpath:/app.properties")해당경로를 적어줍니다.

그리고 실행하면 System.out.println(environment.getProperty("app.about")); 라는 입력으로 해당 app.properties에 있는 app.about에 담김 spring이라는 값이 콘솔에 찍히는 것을 알 수 있습니다.

 

접근은 계층형으로 이루어지며 우선순위가 존재한다고 하였습니다. app.properties 에 있는 해당 프로퍼티 이름과 Vm 에서의 이름을 동일하게 했을 경우 Vm의 프로퍼티가 우선적으로 나오게 되는 것을 확인 할수 있습니다.

 

 

 

 

 

댓글