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의 프로퍼티가 우선적으로 나오게 되는 것을 확인 할수 있습니다.
'Spring > Spring_CoreTechnologies' 카테고리의 다른 글
SpringFrameWork CoreTechnition_section1_7부 (0) | 2020.11.19 |
---|---|
SpringFrameWork CoreTechnition_section1_6부 (0) | 2020.11.19 |
SpringFrameWork CoreTechnition_section1_4부 (0) | 2020.11.17 |
SpringFrameWork CoreTechnition_section1_3부 (0) | 2020.11.17 |
SpringFrameWork CoreTechnition_section1_2부 (0) | 2020.11.17 |
댓글