创建可部署的war文件
产生一个可部署war包的第一步是提供一个 SpringBootServletInitializer
子类,并覆盖它的 configure 方法,这充分利用了Spring框架对Servlet 3.0的支持,并允许在应用通过servlet容器启动时配置它。通常,只需把应用的主类改为继承 SpringBootServletInitializer
即可:
1 |
|
下一步是更新构建配置,这样项目将产生一个war包而不是jar包。如果使用Maven,并使用 spring-boot-starter-parent
(为了配置Maven的war插件),所有需要做的就是更改 pom.xml
的打包方式为 war
:
1 | <packaging>war</packaging> |
如果使用Gradle,需要修改 build.gradle
来将war插件应用到项目上:
1 | apply plugin: 'war' |
该过程最后的一步是确保内嵌的servlet容器不能干扰war包将部署的servlet容器。为了达到这个目的,需要将内嵌容器的依赖标记为 provided
。
如果使用Maven:
1 | <dependencies> |
如果使用Gradle:
1 | dependencies { |
如果使用Spring Boot构建工具,将内嵌容器依赖标记为 provided
将产生一个可执行war包,在 lib-provided
目录有该war包的 provided
依赖。这意味着,除了部署到servlet容器,还可以通过使用命令行 java -jar
命令来运行应用。
为老的servlet容器创建可部署的war文件
老的Servlet容器不支持在Servlet 3.0中使用的 ServletContextInitializer
启动处理。你仍旧可以在这些容器使用Spring和Spring Boot,但你需要为应用添加一个 web.xml
,并将它配置为通过一个 DispatcherServlet
加载一个 ApplicationContext
。