Spring Boot Web項目(Freemarker)如何調試


使用Spring Boot開發WEB項目時, 如果使用了Freemarker/jsp等模版文件, 那么我們需要:

  • Java代碼動態打斷點
  • 實時動態刷新模版文件的修改, 不用每次重啟

1. 使用Maven插件: spring-boot:run

spring-boot:run -Dspring-boot.run.fork=false
fork參數設置為false, 這樣在Java中才能打斷點.
原理: 如果fork了新進程, 則ide自動設置的遠程調試端口綁定到了父進程, 則無法和新進程綁定, 所以就無法打斷點

此時Spring boot 的 devtools會自動被禁止, 所以就無法使用devtools的特性了.

2. 調試模式下啟動 YourApplication(Spring Boot生成的Application)

如果是Idea IDE, 設置 working directory 為: %MODULE_WORKING_DIR% , 否則jsp/freemarker功能無法找到頁面文件.
(原理可能需要讀源碼, 暫時不去研究)

此模式支持devtools, 只要你重新build 模塊, 應用會自動重新重啟.

還可以研究一下 "Running Application Update Policies".

這樣看起來第二種更簡單, 就是有點奇怪.

POM設置

包含devtools, tomcat(provided). 默認使用內嵌tomcat調試.

<dependencies>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-freemarker</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
    </dependency>


    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <scope>provided</scope>
    </dependency>


</dependencies>


免責聲明!

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



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