前言:
平時在使用java做項目開發時,首先想到利用框架來提升開發效率,和提高可維護性。選擇spring可以使用ssm(spring框架,springMVC,mybatis),而且企業中應用也比較廣泛,然而還是發現,在框架中有很多配置,而且看起來相當繁瑣,並且在這些配置中,大部分都屬於默認配置,習慣配置。因此spring boot就此誕生,它的主要目的就是實現“0”配置,此處的“0”不是代表沒有配置,而是代表極少的配置。並且spring boot還內置了tomcat。
Tomcat是一種web容器,類似於apache、nginx等,提供web服務的服務器軟件。它屬於輕量級,方便啓動和配置的web服務器,非常適合用來學習之用。不過有時候也可以作爲生產服務器來部署,通過搭建集羣提高可用性和高負載性。上面說到spring boot內置了tomcat,就意味着spring boot項目可以自己運行(編寫入口類,打爲jar包,使用java -jar 包名.jar來運行)但是在有的情況下我們既需要發佈軟件的靈活性,又想使用spring boot爲我們帶來的便利,因此我們就需要將spring boot項目當做普通項目一樣打成war包發佈到tomcat,這正是本章編寫的目的。
spring boot項目打war包發佈的步驟(此處以maven做講解):
1、構建spring應用(繼承SpringBootServletInitializer並重寫configure方法)
將入口文件做修改,代碼如下:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class WebApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(WebApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(WebApplication.class);
}
}
2、配置pom.xml文件
A、先將打包類型做設置:
<packaging>jar</packaging>
改爲:
<packaging>war</packaging>
B、其他配置如下
<!-- 繼承spring boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!-- 設置屬性編碼與版本-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<!--設置打包時包的名稱-->
<build>
<finalName>ROOT</finalName>
</build>
<!--配置依賴-->
<dependencies>
<!--java持久化API主要用於和數據庫交互-->
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<!-- 移除嵌入式tomcat插件避免與發佈後的環境衝突 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!--對數據庫的支持-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- RabbitMQ -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<!--用於提供web服務(servlet容器)-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--引入thymeleaf模板引擎-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!--引入測試插件比如Junit-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
<version>3.3.7</version>
</dependency>
<!--引入全文檢索-->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-solr</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
<!-- httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.5</version>
</dependency>
<!--自動重啓或自動關閉緩存等功能於開發很有用-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<!-- 數據庫連接池 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.8</version>
</dependency>
<!--引入阿里巴巴連接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.9</version>
</dependency>
</dependencies>
最後使用右鍵項目:
Run As > maven clean(清除已打包的其他文件) > maven install(打包)
然後在target目錄下便可以看到設置了<finalName>ROOT</finalName>的war包,
之後發佈即可