1. 前言
在本文中,我们将通过一个简短的例子来介绍什么是SpringBootServletInitializer类。
SpringBootServletInitializer是一个扩展类,通过该类可以在实现Servlet规范的Web容器上运行位于WAR包中的Spring Boot应用程序。
SpringBootServletInitializer类会绑定来自于Spring应用程序上下文中的Servlet、Filter与ServletContextInitializer到服务器上。
2. SpringBootServletInitializer
为了更切合实际,我们将演示一个继承自SpringBootServletInitializer的类:
被@SpringBootApplication注解的WarInitializerApplication类继承了SpringBootServletInitializer并覆写了configure()
方法。该方法通过使用SpringApplicationBuilder将WarInitializerApplication类注册为配置类。
@SpringBootApplication
public class WarInitializerApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(
SpringApplicationBuilder builder) {
return builder.sources(WarInitializerApplication.class);
}
public static void main(String[] args) {
SpringApplication sa = new SpringApplication(
WarInitializerApplication.class);
sa.run(args);
}
@RestController
public static class WarInitializerController {
@GetMapping("/")
public String handler() {
// ...
}
}
}
现在,如果我们把我们的程序打包为WAR包,我们就可以把这个WAR包使用传统的方式部署到Web容器中。
3. 总结
在本文中,我们介绍了SpringBootServletInitializer而且还演示了它的用法:运行位于WAR包中的Spring Boot应用程序。