欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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服务器

Springboot部署tomcat相关问题总结

Springboot部署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>

这样就基本解决项目部署问题了!