将Spring boot应用程序部署到tomcat时未调用ApplicationContextInitializer
我试图在Tomcat8.0.32中部署SpringBootWar。我已经定义了ApplicationContextInitializer类,如下所示。然而,当我启动tomcat时,从未调用ApplicationContextInitializer的initialize方法。我做错了什么。谢谢你的帮助将Spring boot应用程序部署到tomcat时未调用ApplicationContextInitializer,spring,spring-boot,Spring,Spring Boot,我试图在Tomcat8.0.32中部署SpringBootWar。我已经定义了ApplicationContextInitializer类,如下所示。然而,当我启动tomcat时,从未调用ApplicationContextInitializer的initialize方法。我做错了什么。谢谢你的帮助 public class Application extends SpringBootServletInitializer { public static void main(String[] a
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) throws Exception {
SpringApplication app = new SpringApplication(Application.class);
app.addInitializers(new ApplicationContextInitializer<?>[] { new DemoInitializer() });
app.run(args);
}
}
公共类应用程序扩展了SpringBootServletilizer{
公共静态void main(字符串[]args)引发异常{
SpringApplication app=新的SpringApplication(Application.class);
app.addInitializers(新的ApplicationContextInitializer[]{new DemoInitializer()});
应用程序运行(args);
}
}
根据,当作为war启动时,需要通过覆盖配置(SpringApplicationBuilder)
方法,将ApplicationContextInitializer
添加到SpringApplicationBuilder
。您可以这样使可执行应用程序和war都可以使用初始值设定项(其中CustomInitializer
是您的ApplicationContextInitializer
:
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return configureApplication(builder);
}
public static void main(String[] args) {
configureApplication(new SpringApplicationBuilder()).run(args);
}
private static SpringApplicationBuilder configureApplication(SpringApplicationBuilder builder) {
return builder.sources(Application.class).initializers(new CustomInitializer());
}
}
我必须在应用程序类中重写createSpringApplicationBuilder,并在SpringApplicationBuilder中设置初始值设定项。这对我很有效!