Spring Boot SpringBootServletInitializer类的用法

作者 | 2020年4月3日

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应用程序。

发表评论

电子邮件地址不会被公开。 必填项已用*标注