Spring Boot學習隨筆- 本地化測試(@SpringBootTest)、熱部署(spring-boot-devtools)、日誌Logback常用級別使用、指定包級別輸出

来源:https://www.cnblogs.com/eyewink/archive/2023/12/11/17895895.html
-Advertisement-
Play Games

在第七章中,介紹了本地測試的方式,使用了@SpringBootTest註解來啟動本地Spring環境,方便進行功能測試,並且提到了spring-boot-devtools依賴可以幫助實現自動重啟,增加了開發效率,講解了熱部署的概念和使用。引入spring-boot-devtools依賴併在IDEA中... ...


學習視頻:【編程不良人】2021年SpringBoot最新最全教程

第七章、本地測試

頻繁啟動伺服器進行功能的訪問非常繁瑣、SpringBoot給我們提供了用於測試的依賴,自動集成Junit,使用了這個以來後,test包在打包時不會被打包進去

  • @SpringBootTest註解

    修飾在類上,用來啟動本地Spring環境

@SpringBootTest
public class EmpServiceTest {
    @Autowired
    private EmpService empService;

    @Test
    public void testFindAll() {
        empService.findAll().forEach(emp -> System.out.println("emp = " + emp));
    }
}

第八章、熱部署

  • 作用

    熱部署是指在應用程式運行過程中,無需重啟應用程式即可實時更新代碼和資源文件的過程。在Spring Boot中,熱部署可以幫助開發人員在開發階段快速調試和修改代碼,提高開發效率。

  • 開啟熱部署

    引入依賴

    <!--熱部署依賴 devtools-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <!-- optional:該依賴是否可以傳遞 true不能傳遞,預設為false:可傳遞-->
        <optional>true</optional>
    </dependency>
    

    <optional></optional> 標簽:決定該依賴是否可以傳遞 true不能傳遞,預設為false:可傳遞

  • IDEA設置

    開啟自動編譯

    如果沒有compiler.automake.allow.when.app.runing這個選項,那就進行伺服器設置:按照下圖將兩個選項 設置成Update classes and resources

第九章、日誌處理(Logback)

  • Logback

    Logback是Java社區中最廣泛使用的日誌框架之一。它是Log4j的後繼者,logback的架構由三個類組成:Logger(記錄器)、Appender(附加器)和Layout(佈局)

    logback分為具體的三個模塊:logback-core,logback-classic,logback-access。是對log4j日誌進一步的改進

總結:logback也是一個開源日誌組件和log4j作用一致,都是用來生成日誌,logback更加輕量

  • 日誌的級別

    日常開發中,最常用的四個就是:DEBUG、INFO、WARN、ERROR

  • 項目中日誌分類

    1. rootLogger:根全局日誌,監聽項目中所有的運行日誌,包括引入依賴jar中的日誌
    2. logger:指定包級別/子日誌 用來監聽項目中指定包中的日誌信息
  • 配置日誌

    SpringBoot框架中預設根日誌為INFO

    sping-boot-starter集成了logback

    啟動springboot時,根全局日誌就會按照預設的INFO級別,自動輸出信息

  • 配置日誌

    # 配置日誌
    logging:
      level:
        root: debug # 調整根日誌展示為debug
    

    重新啟動以後可以看到調試信息變得非常多,不利於查看,所以不建議根日誌設為Debug級別

  • 輸出指定包的日誌級別

    # 配置日誌
    logging:
      level:
        com.baizhi.dao: debug # 輸出指定包的日誌級別。根日誌保持預設即可
    

    進行測試 成功看到方法的調試結果,包括SQL語句以及返回結果數,

  • 生成日誌文件

    # 配置日誌
    logging:
      level:
        root: info # 調整根日誌展示為debug
        com.baizhi.dao: debug # 輸出指定包的日誌級別。根日誌保持預設即可
      **file:
        name: run.log #指定生成日誌文件名稱
        path: ./ #將日誌文件生成當前目錄(當前項目的目錄中)**
    

    測試下,重新啟動後,成功生成日誌文件

  • 使用log代替列印輸出

    先指定具體的包,比如我要測試service里的方法,那麼就指定service

    # 配置日誌
    logging:
      level:
        com.baizhi.service: debug
    

    在需要輸出的類中聲明日誌對象,然後就可以調用log的debug、info、warn、error等方法輸出調試結果了

    import org.slf4j.Logger;
    @Service
    @Transactional
    public class EmpServiceImpl implements EmpService {
        // 聲明一個日誌對象  Logger選擇slf4j包下麵的
        private static final Logger log = LoggerFactory.getLogger(EmpService.class);
    
        @Autowired
        private EmpDAO empDAO;
    
        public EmpServiceImpl(EmpDAO empDAO) {
            this.empDAO = empDAO;
        }
    
        @Override
        public List<Emp> findAll() {
            return empDAO.findAll();
        }
    
        @Override
        public void save(Emp emp) {
            log.debug("姓名:{}" , emp.getName());
            log.debug("工資:{}" , emp.getSalary());
            log.debug("生日:{}" , emp.getBirthday());
            empDAO.save(emp);
        }
    

作者:揚眉劍出鞘
出處: https://www.cnblogs.com/eyewink/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 開心一刻 晚上,老婆輔導女兒寫語文作業 填空題:春天來了,__綠了 女兒:春天來了,爸爸綠了 老婆一臉不悅地問道:你再說一遍,春天來了,什麼玩意綠了? 女兒:春天來了,爸爸綠了呀 老婆很生氣,但依舊溫柔地問道:春天來了,爸爸怎麼綠了呢 女兒略帶哭腔的說道:那冬天呢 老婆急的直撓頭:冬,冬,冬..., ...
  • 一、引出問題 你是否有在使用 Gson 序列化對象時,見到如下異常: Abstract classes can't be instantiated! Register an InstanceCreator or a TypeAdapter for this type. 什麼時候會出現如此異常。下麵舉 ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 在前端中,JavaScript(JS)可以使用XMLHttpRequest對象或fetch API來發起網路請求。然而,JavaScript本身並沒有提供直接的方法來暫停請求的執行。一旦請求被髮送,它會繼續執行並等待響應。 儘管如此,你可 ...
  • Vue報錯:error Mixed spaces and tabs no-mixed-spaces-and-tabs 一、解釋 在開發過程中使用了ESLint,用來規範代碼風格。ESLint是語法檢查工具,缺點是對所寫代碼要求過於嚴格。這裡是因為空格的使用導致的。 二、報錯可能出現的地方 我第一次出 ...
  • 在TypeScript中,Omit<Type, Keys> 是一個工具類型(utility type),它用於創建一個新的類型,這個新類型是從現有類型(Type)中排除了某些指定的屬性(Keys)後的結果。 具體來說,Omit<User, "token"> 表示創建一個新的類型,這個類型包含了 Us ...
  • 跨端動態化開發方案重要性日益凸顯,本文對我們團隊MCube動態化實踐做了總結,為大家提供經驗和借鑒。 接入背景 隨著我們工程的需求迭代,暴露出了業務需求量大,分端開發和發版更新成本高等痛點,使用H5頁面來代替,在用戶體驗和性能相較原生有差異,所以我們團隊開始了對動態化改造的研究。 在做過一些列動態化 ...
  • 合理懷疑MySQL是不是克我,上次配環境配到崩潰就是因為MySQL安裝失敗,這次是因為鏈接不上IDEA 閑話少敘,直接看代碼、報錯信息以及解決方式: 代碼: package jdbc; import java.sql.Connection; import java.sql.DriverManager ...
  • 其實,我現在也沒想好該怎麼描述這段不太好的經歷,怎麼說呢,那種感覺就好像開局就被針對了一樣,完全發育不起來! 下麵我來簡單的做下自我介紹吧,我今年35歲,來自一個二線城市農村家庭,一個小小的測試,一直相信通過讀書、學習可以改變命運,也是一個比較擰巴的人。 這一年我經歷了什麼? 父親肺癌 在今年5月中 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...