Spring Boot 其默认是集成web容器的,启动方式由像普通Java程序一样,main函数入口启动。其内置Tomcat容器或Jetty容器,具体由配置来决定(默认Tomcat)。当然你也可以将项目打包成war包,放到独立的web容器中(Tomcat、weblogic等等),当然在此之前你要对程序入口做简单调整。
1、打包成jar:
Spring Boot 打成jar包要可以运行,必须使用Spring Boot提供的一个插件,不然打成的普通的jar是无法运行Spring Boot工程的,一般会提示 jar中没有主清单属性。 插件如下:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
pom.xml中<packaging>jar</packaging>可以不指定,默认是jar。然后执行mvn package 就可以达成jar包,在服务器上输入:java -jar XXX.jar 即可运行。
注:上面的配置需要先在pom.xml中指定spring-boot的parent,如
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.5.RELEASE</version>
</parent>
2、打包成war:
1)在 pom.xml 文件将 <packaging>jar</packaging> 改为 <packaging>war</packaging>
2)加上build插件,表明此Web工程不需要web.xml文件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
3)排除 Spring Boot Tomcat 组件,scope 属性设为 provided
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
4)在 Application 即main方法类同包下创建实现外部 Web 容器启动的启动类
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
public class WxServletInitializer extends SpringBootServletInitializer{
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(App.class);//App 为原main函数启动类
}
}
这个类的作用与在web.xml中配置负责初始化Spring应用上下文的监听器作用类似,只不过在这里不需要编写额外的XML文件了。而这个类的位置和要Application.java在同一个目录下。
然后使用mvn package打成了war包。将war包放到tomcat的webapp下,启动tomcat,在浏览器上输入:
http://localhost:8080/Test-0.0.1-SNAPSHOT/test?name=abc
即可访问。