2016-02-05 50 views
8

将自定义ApplicationContextInitializer添加到Spring Web应用程序的一种方法是将其添加到web.xml文件中,如下所示。如何将自定义ApplicationContextInitializer添加到弹簧引导应用程序?

<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> 

但因为我使用的春天开机,有什么办法,我没有创建web.xml中只是添加CustomApplicationContextInitializer?

回答

21

可以在META-INF/spring.factories

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

注册它们还可以添加他们对你SpringApplication运行之前

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

或者在Builder

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

这不是乍看起来很明显,所以我打开了#5091 t o检查。

+1

或提及只是简单地'context.initializer.classes = com.example.YourInitializer'在属性文件中。我喜欢这种方法,因为那样你就可以通过环境特定的属性文件来启用/禁用初始值设定程序 –

+0

@JeffSheets它的工作原理对我来说最为方便,您应该将它作为答案发布 –

2

另一种方法是在properties/yml文件中使用context.initializer.classes=com.example.YourInitializer。我喜欢这种方法,因为那样你可以通过环境特定的道具文件来启用/禁用初始化器。

它在spring boot docs

相关问题