Springboot部署tomcat相关问题总结
程序员文章站
2022-07-09 12:43:04
...
1、修改Springboot启动文件
原来的Springboot启动文件(示例)
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class CmsApplication {
public static void main(String[] args) {
SpringApplication.run(CmsApplication.class, args);
}
}
需要修改为
public class CmsApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 注意这里要指向原先用main方法执行的Application启动类
return builder.sources(App.class);
}
}
在同级目录中增加一个class文件
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.wechargame.cms.mapper")
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
修改pom.xml
<!-- 修改为war包-->
<groupId>com.weCharGame.cms</groupId>
<artifactId>weCharGameCms</artifactId>
<version>0.1.0</version>
<packaging>war</packaging>
---------------------------------------------------------------
<!-- 修改spring-boot-starter-web去掉嵌入式的tomcat -->
<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>
---------------------------------------------------------------
<!-- 增加-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!--打成war包时需要用到-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
在项目中增加一个tomcat服务器
这个地方关键是需要将Deployment中的artifact中选择待有exploded,并且在appliaction context 中添加项目名。
注意 : 这个项目名需要和pom中的artifactId相同。
<groupId>com.weCharGame.cms</groupId>
<artifactId>weCharGameCms</artifactId>
<version>0.1.0</version>
<packaging>war</packaging>
这样就可以在tomcat使用了,但是和Springboot的启动速度不能比啊,太慢了!
打war包,部署到服务器
先执行 maven 的 clean命令, 执行package, 将打包的项目放到tomcat的webapps目录下就可以了。
最后,关于项目路径问题解决方案:
我使用thymeleaf,使用在公共的js文件中添加
const context = [[${#httpServletRequest.getContextPath()}]];
然后在每一个ajax请求中拼接上context就好。
在静态资源中使用thymeleaf的语法:
<link rel="stylesheet" th:href="@{/static/layui/css/layui.css}">
<script type="text/javascript" th:src="@{/static/js/jquery-3.3.1.js}"></script>
这样就基本解决项目部署问题了!