2016-04-13 2 views
1

Я пытаюсь развернуть войну Spring boot в tomcat 8.0.32. У меня класс ApplicationContextInitializer определен примерно так, как показано ниже. Однако, когда я запускаю tomcat, метод инициализации ApplicationContextInitializer никогда не будет вызван. Я делаю что-то неправильно здесь. Спасибо за вашу помощь.ApplicationContextInitializer не вызывается при развертывании приложения Spring boot to tomcat

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); 
    } 
} 
+0

мне пришлось переопределить createSpringApplicationBuilder в классе Application и установить инициализатор в SpringApplicationBuilder Это работало для меня.! – Coder

ответ

0

Согласно Spring Boot docs, вам нужно добавить ApplicationContextInitializer к SpringApplicationBuilder путем переопределения метода configure(SpringApplicationBuilder builder) при запуске, как война. Вы можете сделать Initializer доступны как исполняемого приложения и войны, как это (где 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()); 
    } 

} 
Смежные вопросы