프로파일

spring framework에서 제공해주는 기능.(https://velog.io/@max9106/Spring-ApplicationContext%EC%9D%98-%EA%B8%B0%EB%8A%A5%EB%93%A4-jnk5npcm3d)

특정한 프로파일에서만 특정한 Bean을 등록하고 싶다거나, 애플리케이션의 동작을 특정 프로파일 일때 Bean설정을 다르게 하고 싶다거나할 때 사용

프로파일 예시

config라는 디렉토리를 만들고, 2개의 Bean 설정을 만들어준다.

스크린샷 2020-02-06 오전 1.37.22.png

2개의 Bean 설정 클래스 모두 hello라는 Bean을 만들어준다.

스크린샷 2020-02-06 오전 1.39.49.png

그리고 각각 다른 프로파일을 붙여준다.

스크린샷 2020-02-06 오전 1.41.26.png

즉, BaseConfiguration은 프로파일이 prod 일 때만, 사용되고 그렇지 않을 때는 사용되지 않는다.

마찬가지로 TestConfiguration은 프로파일이 test 일 때만, 사용되고 그렇지 않을 때는 사용되지 않는다.

이 상태로 hello를 주입받아 사용하면 error가 발생한다.

스크린샷 2020-02-06 오전 1.44.58.png

스크린샷 2020-02-06 오전 1.45.05.png

스프링 부트에서는 application.properties에서 사용할 프로파일을 설정해 줄 수 있다.

스크린샷 2020-02-06 오전 1.46.35.png

이것을 적용해주면, 적용해준 프로파일의 hello가 출력됨을 볼 수 있다.

application.properties에서 사용한 spring.profiles.active도 프로퍼티이다.

프로파일용 프로퍼티

프로파일용 프로퍼티를 만들어 줄 수도 있다.

prod용 프로퍼티 파일과, test용 프로퍼티 파일을 만들어주고, 각각 동일한 key값의 프로퍼티를 만들어준다.

스크린샷 2020-02-06 오전 1.54.22.png

이런 프로파일 관련된 프로퍼티 파일의 우선순위가 기본 application.properties 보다 높다.

mvn clean package 이후, java -jar spring-boot-practice-1.0-SNAPSHOT.jar --spring.profiles.active=prod 명령어로 터미널에서 실행해보면 프로파일이 prod로 설정되어 [prod]junseo가 찍힌다.(커맨드라인 명령어가 프로퍼티 파일의 우선순위보다 높기때문에 오버라이딩)

스크린샷 2020-02-06 오전 1.59.19.png

test도 마찬가지다.

활성화할 프로파일 설정

프로퍼티 파일에 spring.profiles.include= 를 이용하여 추가할 프로파일을 설정할 수 있다.

스크린샷 2020-02-06 오전 2.04.24.png

이 설정이 읽혀졌을 때 추가할 프로파일(proddb)을 활성화 하라는 뜻이다.

즉, 아래와 같이 코드를 두고 --spring.profiles.active=prod로 실행하면, 프로파일이 prod로 실행되고, application-prod.properties에 의해 application-proddb.properties가 활성화되어 myProperties.getFullName 값은 proddb 프로퍼티에 정의되어 있는 [proddb]kimjunseo가 되는 것이다.

스크린샷 2020-02-06 오전 2.06.59.png

스크린샷 2020-02-06 오전 2.09.19.png

tip) 프로파일 값을 빌드때마다 주고 싶으면 아래와 같이 줄 수 있다.

스크린샷 2020-02-06 오전 2.10.17.png

스크린샷 2020-02-06 오전 2.10.26.png

0개의 댓글