如何将自定义ApplicationContextInitializer添加到弹簧引导应用程序?
问题描述:
将自定义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?
答
可以在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检查。
答
另一种方法是在properties/yml文件中使用context.initializer.classes=com.example.YourInitializer
。我喜欢这种方法,因为那样你可以通过环境特定的道具文件来启用/禁用初始化器。
或提及只是简单地'context.initializer.classes = com.example.YourInitializer'在属性文件中。我喜欢这种方法,因为那样你就可以通过环境特定的属性文件来启用/禁用初始值设定程序 –
@JeffSheets它的工作原理对我来说最为方便,您应该将它作为答案发布 –