환경에 종속적 인 활성 프로파일 호스트를 설정하고 환경에 독립적 인 후크를 찾을 수 없습니다.활성 환경을 프로그래밍 방식으로 설정하는 방법은 무엇입니까?
다음 공장에서는 응용 프로그램 컨텍스트를 만들기 전에 활성 프로파일을 설정합니다.
/META-INF/spring.factories
org.springframework.context.ApplicationContextInitializer=MyApplicationContextInitializer
MyApplicationContextInitializer.java 예는 JUnit을 모의하여 환경에서 실행되는 경우
public class MyApplicationContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override
public void initialize(ConfigurableApplicationContext ca) {
ConfigurableEnvironment environment = ca.getEnvironment();
environment.addActiveProfile("myHost");
}
}
...
* Test.java
...
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
...
... 다음이 기록됩니다.
...
... RestControllerTests : The following profiles are active: myHost
...
하지만 여기서 myHost 프로필 이 활성화되지 및 기본 프로파일의 JUnit의 맥락에서 사용됩니다!
VM 인수와 자바 응용 프로그램과의 JUnit과 같은 테스트가 작동 ... 나는 전쟁 패키지 스프링 부팅 스타터 웹 응용 프로그램을 사용하여 프로그램의 프로필을 설정하고 모든 환경에서 사용되어야한다
-Dspring.profiles.active=myHost
- 자바 응용 프로그램
- JUnit을
- 서블릿 컨테이너
모든 환경에 대해 프로그래밍 방식으로을 어떻게 설정합니까?
프로필은 현재 호스트 이름으로 설정되므로 VM 인수 또는 환경 변수를 사용하고 싶지 않습니다.
이 솔루션은 자바 애플리케이션 만 아니라 실행 작동 왜냐하면'main' 메쏘드는 서블릿 컨테이너 나 JUnit-Tests에서 사용되지 않기 때문입니다. –
@mg. 당신을 도울 다른 옵션으로 편집. – Tom
'postProcessBeanFactory'는 활성 프로파일이 이미 설정된 후에 호출됩니다. 프로파일에 대한 로그를 얻습니다. 기본 프로파일로 돌아가는 활성 프로파일 세트가 없습니다. 디폴트 및 로그는 @'... oswcsGenericWebApplicationContext : 새로 고침 org.s[email protected]2df6226d : 시작 날짜 [..] .]; 'postProcessBeanFactory'에서 내 중단 점에 대한 컨텍스트 계층의 루트. –