특정 실행 환경에서 사용할 빈들의 그룹
@Profile
/*
** 방법 1. @Configuration에 정의
*/
@Configuration
@Profile("test") //빈 설정 파일이 test profile일 때만 사용
public class TestConfiguration {
@Bean
public BookRepository bookRepository() {
return new TestBookRepository();
}
}
/*
** 방법 2. @Bean 메소드에 정의
*/
@Configuration
public class TestConfiguration {
@Bean @Profile("test")
public BookRepository bookRepository() {
return new TestBookRepository();
}
}
/*
** 방법 3. @Component 클래스에 정의
*/
@Repository
@Profile("test")
public class TestBookRepository implements BookRepository {
}
-Dxxx.profiles.active="프로파일1,프로파일2,프로파일3,..."
@ActiveProfiles
: 테스트 수행 시 어떤 profile
을 사용할 것인지 지정 @Component
public class AppRunner implements ApplicationRunner {
@Autowired
ApplicationContext ac;
@Override
public void run(ApplictionArguments args) throws Exception {
Environment environment = ac.getEnvironment();
//현재 active한 프로파일 가져오기
System.out.println(Arrays.toString(environment.getActiveProfiles()));
//기본으로 적용되는 프로파일 가져오기
System.out.println(Arrays.toString(environment.getDefaultProfiles()));
}
}
💡 Environment
활성화 할 프로파일 확인 및 설정
애플리케이션 구동시 필요한 정보들을 key-value 형태로 정의한 설정값
💡 우선순위
- ServletConfig 매개변수
- ServletContext 매개변수
- JNDI(java:comp/env/)
- JVM 시스템 프로퍼티(VM Option)
- JVM 시스템 환경 변수(운영체제 환경 변수)
-Dxxx.name="프로퍼티명"
xxx.name = 프로퍼티명
@Override
public void run(ApplicationArguments args) throws Exception {
Environment environment = ac.getEnvironment();
System.out.println(environment.getProperty("device.name"));
}
📖 참고