在第七章中,介紹了本地測試的方式,使用了@SpringBootTest註解來啟動本地Spring環境,方便進行功能測試,並且提到了spring-boot-devtools依賴可以幫助實現自動重啟,增加了開發效率,講解了熱部署的概念和使用。引入spring-boot-devtools依賴併在IDEA中... ...
第七章、本地測試
頻繁啟動伺服器進行功能的訪問非常繁瑣、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
-
項目中日誌分類
- rootLogger:根全局日誌,監聽項目中所有的運行日誌,包括引入依賴jar中的日誌
- 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/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。