1.处理spring boot项目打的war包在外部tomcat没办法运行起来并访问的问题
第一步:spring boot项目的启动类继承自SpringBootServletInitializer
因为在外部容器部署的话,就不能依赖于Application的main函数了,而是要以类似于web.xml文件配置的方式来启动spring应用上下文,因此需要在启动类继承SpringBootServletInitializer并实现configure方法,这个类的作用与在web.xml中配置负责初始化spring应用上下文的监听器作用类似。代码如下图:
第二步:修改pom文件,让spring boot内嵌的tomcat在运行时不起作用
有两种办法,任选一种:
<dependency>
<!--声明spring boot内嵌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-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
最后启动外部的tomcat,在浏览器中访问时,需要添加项目名字,也就是war解压后文件夹的名字