sourcecode

사용자 지정 ApplicationContextInitializer를 스프링 부팅 응용 프로그램에 추가하는 방법은 무엇입니까?

codebag 2023. 6. 22. 21:50
반응형

사용자 지정 ApplicationContextInitializer를 스프링 부팅 응용 프로그램에 추가하는 방법은 무엇입니까?

사용자 지정 ApplicationContextInitializer를 스프링 웹 응용 프로그램에 추가하는 한 가지 방법은 아래와 같이 web.xml 파일에 추가하는 것입니다.

<context-param>
    <param-name>contextInitializerClasses</param-name>
    <param-value>somepackage.CustomApplicationContextInitializer</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

하지만 스프링 부트를 사용하고 있기 때문에 CustomApplicationContextInitializer를 추가하기 위해 web.xml을 생성하지 않아도 되는 방법이 있습니까?

에 등록할 수 있습니다.META-INF/spring.factories

org.springframework.context.ApplicationContextInitializer=\
com.example.YourInitializer

또한 다음에 추가할 수도 있습니다.SpringApplication실행하기 전에

application.addInitializers(YourInitializer.class);
application.run(args);

아니면 건설업자에게

new SpringApplicationBuilder(YourApp.class)
    .initializers(YourInitializer.class);
    .run(args);

언뜻 보기에 문서상으로는 명확하지 않아서 #5091을 열어 확인했습니다.

또 다른 접근 방식은context.initializer.classes=com.example.YourInitializer속성/yml 파일에 있습니다.환경별 속성 파일을 통해 이니셜라이저를 활성화/비활성화할 수 있기 때문에 이 방법이 좋습니다.

스프링 부트 문서에만 간략하게 언급되어 있습니다.

다른 옵션은 다음과 같이 클래스 수준에서 @ContextConfiguration 주석을 사용하는 것입니다.

@ContextConfiguration(initializers = [TestContainersInitializer::class])

이 방법은 테스트를 실행하기 전에 도커 컨테이너를 시작하는 등 이 이니셜라이저를 테스트 클래스에 추가하는 데 유용합니다.

언급URL : https://stackoverflow.com/questions/35217354/how-to-add-custom-applicationcontextinitializer-to-a-spring-boot-application

반응형