八、SpringBoot生產環境部署


war包部署

1.下載安裝Tomcat

下載地址:https://tomcat.apache.org/download-90.cgi

如下圖所示:

2.入口類繼承SpringBootServletInitializer重寫configure方法

如果要進行生產環境部署,需要單獨配置一下Spring Boot 的入口類,需要繼承SpringBootServletInitializer類,重寫configure方法,因為默認情況外部Tomcat不能讀取到Spring Boot 入口類的main方法啟動程序加載,使用需要繼承,代碼如下:

package com.luzhanshi.springBootFrame;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class SpringBootFrameApplication extends SpringBootServletInitializer {
    /**
     * Spring Boot 默認main方法
     * @param args
     */
    public static void main(String[] args) {
        SpringApplication.run(SpringBootFrameApplication.class, args);
    }

    /**
     * 重寫configure方法,加載啟動類
     * @param builder
     * @return
     */
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(SpringBootFrameApplication.class);
    }
}

部分不熟悉IDEA的同學可能不知道怎么重新父類的方法,參照下圖即可:

3.排除內置tomcat

需要配置一下pom.xml,排除一下內置tomcat的jar包,防止打包之后與外面Tomcat jar 包沖突,導致項目啟動失敗,配置如下:

<!--排除內置tomcat jar包-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

主要的代碼是provided,設置打包不會包含進去,由其他設施提供。

4.IDEA生成war文件

idea打war包步驟可參考鄙人:https://www.cnblogs.com/luzhanshi/p/10924640.html文章

如果打包為jar包的時候,不會包含JSP文件,所以訪問的時候回404,而打包為war的時候回包含JSP文件,所以需要把打包格式修改為war.

5.配置Tomcat運行項目

步驟一:把war文件復制到tomcat的webapps目錄下

步驟二:配置conf/server.xml

在Host標簽內添加Context設置,docBase屬性填寫war文件名稱,配置如下:

 

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">    
    <Context path="" docBase="此處填寫war包名" debug="0" privileged="true" reloadable="true" />
    <!--
    其他代碼
    -->
</Host>

步驟三:啟動tomcat

運行bin/shutdown.bat文件,啟動tomcat

到此項目部署成功,雖然本人部署到Windows服務器了,Linux也是一樣的步驟。

如果我們不想加8080端口訪問,那么我們可以將tomcat默認的8080端口修改為80,這樣因為瀏覽器在我們沒有輸入端口時,默認的端口時80,那么我們就不用輸入端口了:

打開tomcat文件夾-->找到conf-->server.xml-->用記事本打開

 

此時我們不用輸入端口也可以訪問項目了

jar包部署

ecliplse獲得jar:

 IDEA獲得jar:

 上面生成的jar包都會出現在target目錄下面

把上面的jar包復制到一個新建的文件夾:

將項目里面的下面這個文件也拷貝到該文件夾:

 

最后在該文件夾新建一個startup.bat文件,並編輯如下內容:

項目發布時最終文件如下:

application.properties是工程的配置文件,配置數據庫庫接參數、日志文件、日志等級、服務使用的端口等配置信息,把工程中文件拷貝出來即可

startup.bat啟動服務的批處理,也可包含配置信息,參考如下圖,

最后以管理員身份運行bat文件,項目就啟動了

訪問地址和本地訪問地址一樣:

jar和war的區別?

  • jar(java application archive)java應用程序庫,通常為開發引用的通用類
  • war(web application archive)web應用程序

所以從jar和war的區別來看,網頁程序打包成war格式也是很合適的。

四、知識擴展:Spring Boot 模板推薦

雖然上文我們詳細介紹了JSP在Spring Boot 中使用,但是Spring Boot官方並不推薦使用JSP(原因見下文)。

Spring Boot推薦模板引擎:

  • Thymeleaf
  • Freemarker
  • Mustache
  • Groovy Templates

Spring為什么不推薦使用JSP?

Spring官方不推薦使用JSP的原因有這么幾個:

  1. 官方文檔JSP沒有Thymeleaf好;
  2. Thymeleaf健康的開源項目,幾乎每個月都有更新,而JSP已經好幾年沒有實質性的進展;
  3. Thymeleaf有迅速響應的用戶論壇。

更多詳情,點擊查看:https://spring.io/blog/2012/10/30/spring-mvc-from-jsp-and-tiles-to-thymeleaf

總結:按照官方的說法,如果你有數百個JSP頁面,我們並不建議您應該立即拋棄它們,重新使用Thymeleaf,但是,如果您開始開發一個新項目,強烈鼓勵您比較其他模板引擎和JSP,以確認哪一個更適合您。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM