2020-3-28 다시 시작하는 스프링(4) - 프로파일
ApplicationContext Environment profile
- 특정환경을 정의하기 위해 @Profile이 있는데, ApplicationContext에서 상속하고 있는 EnvironmentCapable의 getEnvironment() 메서드를 통해 사용할 수 있는거다.
프로파일
- 빈들의 그룹
- Environment의 역할은 활성화할 프로파일 확인 및 설정
유즈케이스
- 테스트환경에서는 A라는 빈을 사용하고 배포환경에서는 B라는 빈을 쓰고 싶을때.
프로파일정의
- 클래스에 정의
- 메서드정의
@Configuration
@Profile("!prod")
public class Configuration {}
@Component
@Profile("test2")
public class Configuration{
@Bean
@Profile("test3")
public void method() {}
}
- 위와같은 방식으로 설정을 프로파일 등록을 할 수 있다.
- !prod와 같이 !prod가 아닌 경우에 등록을 할 수 있도록 설정할 수 있다.
@Component
public class AppRunner implements ApplicationRunner {
@Autowired
ApplicationContext ctx;
@Override
public void run(ApplicationArguments args) throws Exception {
Environment environment = ctx.getEnvironment();
System.out.println(Arrays.toString(environment.getActiveProfiles()));
System.out.println(Arrays.toString(environment.getDefaultProfiles()));
}
}
@Configuration
@Profile("test") // testProfile일때만 사용할 수 있다.
public class TestConfiguration {
@Bean
public BookRepository bookRepository() {
return new TestBookRepository();
}
}
// []
// [default]
- 일반적으로 profile을 호출하면 default가 나온다.
- @Profile(“value”)의 경우 해당 환경이 value일때만 저 @Configuration이 동작한다.
Profile지정하기
- -Dspring.profiles.active=”test”… 옵션을 실행할때 줘야된다.
- @ActiveProfiles(테스트용);
- 위의 사진에 VM options에 -Dspring.profiles.active=”value”를 하거나 밑에 Active profiles에 value를 설정하면 된다.
Written on March 28, 2020