前言
之前部署spring boot應用是透過直接輸入命令“java -jar”來實現的。而有些情況,由於部署環境的制約,只能把專案從jar轉換成war才能部署,如新浪雲sae的java環境容器。那怎樣轉換成war專案呢? 其實非常簡單,只需要App類繼承SpringBootServletInitializer,並重寫“protected SpringApplicationBuilder configure(SpringApplicationBuilder builder)” 方法即可
package com.github.carter659.spring10; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.support.SpringBootServletInitializer; /** * 部落格出處:http://www.cnblogs.com/GoodHelper/ * * @author 劉冬 * */ @SpringBootApplication public class App extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(App.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { // TODO Auto-generated method stub // return super.configure(builder); return builder.sources(App.class); } }
修改pom.xml,把<packaging>jar</packaging>修改為<packaging>war</packaging>
並增加如下maven依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
因為spring boot預設會嵌入tomcat。
完整的pom.xml為:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.github.carter659</groupId> <artifactId>spring10</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.2.RELEASE</version> </parent> <name>spring10</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <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-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> <finalName>spring10</finalName> </build> </project>
其他程式碼,“MainController.java”和“index.html”:
package com.github.carter659.spring10; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; /** * 部落格出處:http://www.cnblogs.com/GoodHelper/ * * @author 劉冬 * */ @Controller public class MainController { @GetMapping("/") public String index() { return "index"; } }
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>玩轉spring boot——war部署</title> </head> <body> <h1>玩轉spring boot——war部署</h1> <h4> <a href="http://www.cnblogs.com/GoodHelper/">from 劉冬的部落格 http://www.cnblogs.com/GoodHelper/</a> </h4> <br /> 你好,war <br /> <a href="http://www.cnblogs.com/GoodHelper/">點選訪問原版部落格</a> </body> </html>
最後進入專案的src目錄,執行mvn package命令,生成war包。
一、本地tomcat部署
把剛才生成的spring10.war複製到tomcat的webapps目錄
執行setup.bat
啟動tomcat
執行效果為:
二、新浪雲sae的tomcat部署
進入新浪雲sae的控制檯,建立新應用
選擇java雲容器
在程式碼管理選單中,上傳war包
在日誌管理中能看到spring boot的啟動日誌:
啟動完畢後,輸入網址就能訪問之前部署的專案了:
總結
以上是新浪雲sae部署的全過程。新浪雲部署專案非常簡單,非常適合人員緊張的小微創業公司。
在後面的部落格中,我還會逐步介紹新浪雲自帶的持續整合,而持續整合是使用git或svn提交程式碼後自動構建應用版本,而今天的專案部署只是一個小小的前奏。
程式碼:https://github.com/carter659/spring-boot-10.git
如果你覺得我的部落格對你有幫助,可以給我點兒打賞,左側微信,右側支付寶。
有可能就是你的一點打賞會讓我的部落格寫的更好:)
參考:http://spring.io/guides/gs/convert-jar-to-war/