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>

這樣就基本解決項目部署問題了!

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