복붙노트

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

SPRING

스프링 부트 응용 프로그램에 사용자 정의 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을 만들 필요가없는 방법이 있습니까?

해결법

  1. ==============================

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

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

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

    SpringApplication을 실행하기 전에 SpringApplication에 추가 할 수도있다.

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

    또는 건축업자에게

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

    의사에게 처음에는 눈에 띄지 않았으므로 # 5091을 열어 확인했습니다.

  2. ==============================

    2.또 다른 접근법은 property / yml 파일에서 context.initializer.classes = com.example.YourInitializer를 사용하는 것입니다. 나는이 접근법을 좋아한다. 왜냐하면 환경 특정 소품 파일을 통해 이니셜 라이저를 활성화 / 비활성화 할 수 있기 때문이다.

    또 다른 접근법은 property / yml 파일에서 context.initializer.classes = com.example.YourInitializer를 사용하는 것입니다. 나는이 접근법을 좋아한다. 왜냐하면 환경 특정 소품 파일을 통해 이니셜 라이저를 활성화 / 비활성화 할 수 있기 때문이다.

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

  3. from https://stackoverflow.com/questions/35217354/how-to-add-custom-applicationcontextinitializer-to-a-spring-boot-application by cc-by-sa and MIT license