티스토리 뷰

Spring Profile 알아보기


Profile 이란?

  • Profile은 Bean들의 그룹이라고 생각하면 쉽다!
  • ApplicationContext의 getEnvironment()를 통해 가져올 수 있다!

다음과 같이 가져와서 출력해보자!

  • Environment의 역할은 활성화할 Profile을 확인하고 설정해준다!
  • 위의 실행결과는 아래와 같다! 현재 활성화된 Profile은 없고 default는 언제나 적용된다

  • 그럼 이걸 언제쓸까?

Profile을 언제쓸까?

  • 아직 내가 직접적으로 사용해 본 적은 없다..!
  • Profile은 각각의 환경에 따라 다른 Bean을 써야하는 경우
  • 혹은 특정한 Bean들을 써야하는 경우에 사용된다
  • 예를들어  테스트 환경에서는 A라는 Bean을 사용하고, 배포 환경에서는 B라는 Bean을 쓰고싶다면
  • Profile을 통해 설정해 줄 수 있다!

Profile 정의하기

  • 그럼 profile을 정의해보자
  • Profile은 @Profile("name") 애너테이션을 통해 name이라는 profile로 설정 해줄 수 있다!

  • 위와 같이 Profile을 클래스 또는 메서드에 정의할 수 있다!
  • 그림은 Test라는 Profile을 생성했다
  • test라는 profile이 활성화 될 때만 bean이 생성된다!
  • 그럼 test profile을 활성화 시켜보자!

Profile 설정하기

  • Profile을 active시키기 위해서는 2가지의 방법이 있다!
  • 일단 스프링부트 Application -> Edit Configuration에 들어가자!
  •  

Active profiles 주목..!

  • 그럼 위와같이 Active profiles에 test를 넣어줄 수 있다!
  • 근데 이건 인텔리제이 버전에 따라 다르다고 한다
  • 그래서 다른 방법이있는데 위의 창에서 맨위로 올리면 VM options이 나온다

  • 바로 active profile을 설정해 주는 것이다!
  • -Dspring.profiles.active=test 로 active되는 profile을 설정해 줄 수 있다!
  • 아직 스프링의 이런 명령어에 익숙하지 않아서 이러한 명령어들을 정리해서 한번 올려야겠다..!
  • 그럼 test를 추가하고 한번 active된 profile들을 출력해보자

  • 그럼 아까 빈칸이였던 활성화된 profile에 test가 나온다!! 
  • 그럼 진짜 test때에만 bean이 생성되는지 확인해보자!
  • 먼저 test profile에서만 생성되는 TestBookRepo를 하나 만들었다

  • 그 후 @Autowired를 통해 BookRepo를 주입하고 실행시켜 결과를 확인해보자!

  • test profile이 active이기 때문에 잘 주입된다! 결과도 잘 나온다

주입된 Bean, 현재 활성화된 Profile

  • 그럼 이번에는 VM options에 넣어준 -Dspring.profiles.active=test를 지우고 실행시켜보자!

 

  • 그럼 다음과 같이 빌드에 실패한다! 이유는 BookRepository가 test Profile에서만 생성되기 때문이다
  • 현재는 test가 active하지 않기 때문에 Bean이 생성될 수 없고
  • @Autowired는 Bean을 찾지 못하면 오류가 나기 때문에(required = true 때문에!) Bean을 못찾고 오류가 난다!

Profile 표현식

  • Profile을 선언할때도 표현식이 가능하다
  • !(not) , &(and), |(or) 를 사용할 수 있다
  • 예를들어 위의 상황에서 아래와 같이 !test로 쓴다면? test가 아닐때만 Bean을 생성한다

  • 그리고 실행시켜보면?

  • 다음과 같이 잘 실행된다! 그리고 active한 profile은 없지만 현재 test가 아니기 때문에 Bean이 잘 주입된다!
  • 이런 표현식도 잘 활용하면 좋을 것 같다!

 

Profile에 대해 알아봤는데 아직 실습하면서 제대로 써본 기억이 없다

특정한 상황에만 Bean을 생성했어야 하는 상황을 못만나서 그런 것 같다

다음에 Profile을 쓸때가 온다면 기억해서 써먹어버려야지..!

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함