前言
之前部署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,把
并增加如下maven依赖:
<dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-webartifactId> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-tomcatartifactId> <scope>providedscope> 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.0modelVersion> <groupId>com.github.carter659groupId> <artifactId>spring10artifactId> <version>0.0.1-SNAPSHOTversion> <packaging>warpackaging> <parent> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-parentartifactId> <version>1.4.2.RELEASEversion> parent> <name>spring10name> <url>http://maven.apache.orgurl> <properties> <project.build.sourceEncoding>UTF-8project.build.sourceEncoding> <java.version>1.8java.version> properties> <dependencies> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-webartifactId> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-tomcatartifactId> <scope>providedscope> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-thymeleafartifactId> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-devtoolsartifactId> <optional>trueoptional> dependency> dependencies> <build> <plugins> <plugin> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-maven-pluginartifactId> plugin> plugins> <finalName>spring10finalName> 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
如果你觉得我的博客对你有帮助,可以给我点儿打赏,左侧微信,右侧支付宝。
有可能就是你的一点打赏会让我的博客写的更好:)
返回玩转spring boot系列目录
参考:http://spring.io/guides/gs/convert-jar-to-war/