SpringBoot初级⼊门教程(⼗三)——打完整war包、部署和springboot aop
测试(附源码)
前⾯⼏篇⽂章介绍了如何打 jar 包并如何在服务器环境上测试,那么这篇就说说如何打 war 包并在 tomcat 服务器上部署测试。
毕竟在开发过程中,很多项⽬都是 web 项⽬,最熟悉的还是直接部署在 tomcat 服务器中运⾏,本地开发也是在 IDE 开发环境配置服务器,并发布运⾏。只不过 SpringBoot 项⽬开发时只是把服务器环境已经通过依赖包嵌⼊到了项⽬中,并且可以通过它独特的启动⽅式 run as 来运⾏项⽬⽽已,不⽤把项⽬再次发布到 tomcat 服务器。
当然很多服务器上,都是原有的 tomcat 服务器,很多时候需要把服务直接部署到这些已有的 tomcat 中,才能解决跨域等问题,所以在本地如何让 springboot 项⽬在 tomcat 中发布运⾏,以及如何打 war 包放到服务器上的 tomcat 中对外发布,就显得尤为重要了。
⼀、修改打包类型
由于前⾯⼏篇⽂章都是介绍打 jar 包,配置⽂件中配置都是 jar,现在要打 war 包,所以先修改 pom ⽂件中的打包类型,如下:
<groupId&langlang</groupId>
<artifactId>test-springboot</artifactId>
<version>1.0</version>
<!-- <packaging>jar</packaging> -->
<packaging>war</packaging>
修改后,直接打包,操作步骤和打 jar 包的步骤⼀致。
这⼀步,也许会报错误为:webxml attribute is required (or pre-existing l if executing in update mode),如果出现该错误,请参考上篇⽂章《》中提到的解决⽅式。
打包成功后,可以看到 target ⽬录结构如下:
⼆、修改包名
可以看到上⼀步打包⽣成的 war 包名,是当前项⽬的配置中,artifactId-version.war,当然⼀个 SpringBoot 项⽬中,这两个配置新建项⽬后⼀般是固定的,所以想修改打包后⽣成的 war 包名,可以在 build 配置部分配置包名,如下:
<build>
<!-- 配置打包后的包名 -->
<finalName>testsb</finalName>
<!-- 。。。其它配置。。。 -->
</build>
修改配置后,maven clean,清空 target 下原有⽂件,再次打包,可以看到⽣成的 target ⽬录结构如下:
三、排除 SpringBoot 内嵌的 tomcat 包
由于⽬的是打 war 包部署到 tomcat 进⾏测试,所以 SpringBoot 内嵌的 tomcat 可以排除掉,否则打包部署后,与 tomcat 服务器有冲突,导致报错并⽆法启动服务。排除 tomcat 内嵌 jar 配置如下:
<!-- 该依赖包提供了MVC、AOP等的依赖包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.0.2.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
四、注册启动类
创建 ServletInitializer.java,继承 SpringBootServletInitializer,覆盖 configure(),把启动类 App 注册进去。外部 web 应⽤服务器tomcat 构建 Web Application Context 的时候,会把启动类添加进去。
如果没有注册启动类,部署后启动 tomcat 虽然不报错,但服务访问不了。ServletInitializer.java 代码如下:
st.springboot;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
/**
* @desc 注册启动类
*
* @author 孟郎郎
* @blog blog.csdn/tzhuwb
* @version 1.0
* @date 2018年8⽉18⽇上午9:38:22
*/
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// APP.class 为项⽬启动类,按照当前启动类名修改即可
return builder.sources(App.class);
}
}
五、部署测试
将 war 包部署到服务器 tomcat 中,启动并测试。如果启动正常,可以看到原先这是的 banner 等信息。打开浏览器,输⼊测试接⼝测试即可。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。