spring_reference/IX. ‘How-to’ guides/74.1. Create a deployable w...

2.4 KiB
Raw Blame History

74.1. 创建一个可部署的war文件

产生一个可部署war包的第一步是提供一个SpringBootServletInitializer子类并覆盖它的configure方法。这充分利用了Spring框架对Servlet 3.0的支持并允许你在应用通过servlet容器启动时配置它。通常你只需把应用的主类改为继承SpringBootServletInitializer即可

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }

}

下一步是更新你的构建配置这样你的项目将产生一个war包而不是jar包。如果你使用Maven并使用spring-boot-starter-parent为了配置Maven的war插件所有你需要做的就是更改pom.xml的packaging为war

<packaging>war</packaging>

如果你使用Gradle你需要修改build.gradle来将war插件应用到项目上

apply plugin: 'war'

该过程最后的一步是确保内嵌的servlet容器不能干扰war包将部署的servlet容器。为了达到这个目的你需要将内嵌容器的依赖标记为provided。

如果使用Maven

<dependencies>
    <!-- … -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    <!-- … -->
</dependencies>

如果使用Gradle

dependencies {
    // …
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    // …
}

如果你使用Spring Boot构建工具将内嵌容器依赖标记为provided将产生一个可执行war包lib-provided目录有该war包的provided依赖。这意味着除了部署到servlet容器你还可以通过使用命令行java -jar命令来运行应用。

查看Spring Boot基于以上配置的一个Maven示例应用