Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Spring boot应用程序部署到tomcat时未调用ApplicationContextInitializer_Spring_Spring Boot - Fatal编程技术网

将Spring boot应用程序部署到tomcat时未调用ApplicationContextInitializer

将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

我试图在Tomcat8.0.32中部署SpringBootWar。我已经定义了ApplicationContextInitializer类,如下所示。然而,当我启动tomcat时,从未调用ApplicationContextInitializer的initialize方法。我做错了什么。谢谢你的帮助

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中设置初始值设定项。这对我很有效!