Springboot部署tomcat相关问题总结

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>

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章