SpringBoot
Spring概述
- 輕量級
- IOC控制反轉、DI依賴注入
- AOP面向切面編程
配置
application.yml
application.properties
熱部署
我們在開發中反覆修改類、頁面等資源,每次修改後都是需要重新啓動才生效,這樣每次啓動都很麻煩,浪費了大量的時間。
註解
- @SpringBootApplication是個組合註解(composed annotation),用它就相當於同時用了下面三個註解:
@SpringBootConfiguration : 用於定義一個配置類
@EnableAutoConfiguration :Spring Boot 會自動根據你jar 包的依賴來自動配置
@ComponentScan: 告訴Spring 哪個packages 的用註解標識的類會被spring自動掃描並且裝入bean 容器。
- @EnableAutoConfiguration可以幫助SpringBoot應用將所有符合條件的@Configuration配置都加載到當前SpringBoot創建並使用的IoC容器。
- @RestController是@ResponseBody和@Controller的縮寫
統一錯誤處理
全局異常處理 @ControllerAdvice + @ExceptionHandler
在spring 3.2中,新增了@ControllerAdvice 註解,可以用於定義@ExceptionHandler、@InitBinder、@ModelAttribute,並應用到所有@RequestMapping中。
簡單的說,進入Controller層的錯誤纔會由@ControllerAdvice處理,攔截器拋出的錯誤以及訪問錯誤地址的情況@ControllerAdvice處理不了,由SpringBoot默認的異常處理機制處理。
相關鏈接:https://mp.weixin.qq.com/s?src=11×tamp=1574824755&ver=1999&signature=PwNpIG4EyQbatDHRb78tyEdfIWNt-A03uPm0m9u5RAsaVOKPO2YpPmCy-ajbxMEmbvUgXM4cZxudCqsx0fFlwbdkLEfkt3s5vkjOZ5EQbgGvtFq6pGCQ6vwaSMfEFY&new=1
整合測試
使用spring-boot-starter-test這個包即可完成測試
鏈接:https://blog.csdn.net/zy345293721/article/details/90520273
日誌管理
logback
靜態資源
靜態資源是哪些呢?
首頁
自己的HTML,CSS和JS文件
引用的外部的CSS,JS或者HTML文件
favicon.ico
模板文件
關鍵靜態文件的配置,主要封裝在下面兩個類中:
org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration
org.springframework.boot.autoconfigure.web.ResourceProperties
Spring Boot約定的靜態文件的路徑就是類路徑下的這幾個
- classpath:/META-INF/resources/
- classpath:/resources/
- classpath:/static/
- classpath:/public/
自定義消息轉換器
自定義消息轉換器
自定義消息換換器,我們只需要在配置類@Configuration的類中添加消息轉換器的@Bean加入spring容器,就會被SpringBoot自動加入到容器中。
例如:
@Bean
public StringHttpMessageConverter stringHttpMessageConverter(){
StringHttpMessageConverter converter = new StringHttpMessageConverter(
Charset.forName("UTF-8"));
return converter;
}
自定義攔截器
配置攔截器也很簡單,Spring 爲什麼提供了基礎類WebMvcConfigurerAdapter ,我們只需要重寫 addInterceptors 方法添加註冊攔截器。
實現自定義攔截器只需要3步:
1、創建我們自己的攔截器類並實現 HandlerInterceptor 接口。
2、創建一個Java類繼承WebMvcConfigurerAdapter,並重寫 addInterceptors 方法。
3、實例化我們自定義的攔截器,然後將對像手動添加到攔截器鏈中(在addInterceptors方法中添加)
public class MyInterceptor1 implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println(">>>MyInterceptor1>>>>>>>在請求處理之前進行調用(Controller方法調用之前)");
return true;// 只有返回true纔會繼續向下執行,返回false取消當前請求
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println(">>>MyInterceptor1>>>>>>>請求處理之後進行調用,但是在視圖被渲染之前(Controller方法調用之後)");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println(">>>MyInterceptor1>>>>>>>在整個請求結束之後被調用,也就是在DispatcherServlet 渲染了對應的視圖之後執行(主要是用於進行資源清理工作)");
}
全局異常處理
創建基於 @RestControllerAdvice 全局異常類示例
@RestControllerAdvice 註解是 Spring Boot 用於捕獲 @Controller 和 @RestController 層系統拋出的異常(注意,如果已經編寫了 try-catch 且在 catch 模塊中沒有使用 throw 拋出異常, 則 @RestControllerAdvice 捕獲不到異常)。
@ExceptionHandler 註解用於指定方法處理的 Exception 的類型
鏈接:https://www.cnblogs.com/fishpro/p/11179688.html
整合JSP
鏈接:https://mp.weixin.qq.com/s?src=11×tamp=1574826150&ver=1999&signature=gPoaGZWU6g946YGVZguHcffBP8qKXO6RLZtdA83DjdvJAV2BZuIhZdOyomEGClH1hLDBhWNecw0D6vfZYLAYy3t5WoTZv-CPz1VZ2ySEjisJ9TL1pj*ikbpTuMextO&new=1
整合QuartZ
一、Quartz簡介:
a. Quartz 是一個完全由 Java 編寫的開源作業調度框架,爲在 Java 應用程序中進行作業調度提供了簡單卻強大的機制。
b. Quartz 可以與 J2EE 與 J2SE 應用程序相結合也可以單獨使用。
c. Quartz 允許程序開發人員根據時間的間隔來調度作業。
d. Quartz 實現了作業和觸發器的多對多的關係,還能把多個作業與不同的觸發器關聯。
二、Quartz 核心概念
1、Job
表示一個工作,要執行的具體內容。此接口中只有一個方法,如下:void execute(JobExecutionContext context)
2、JobDetail
表示一個具體的可執行的調度程序,Job 是這個可執行程調度程序所要執行的內容,另外 JobDetail 還包含了這個任務調度的方案和策略。
3、Trigger
代表一個調度參數的配置,什麼時候去調。
4、Scheduler
代表一個調度容器,一個調度容器中可以註冊多個 JobDetail 和 Trigger。當 Trigger 與 JobDetail 組合,就可以被 Scheduler 容器調度了。
連接:https://mp.weixin.qq.com/s?src=11×tamp=1574826191&ver=1999&signature=H62trH9WokmrtCeSK-j1ieSBMZTv5TuGByEqYS1XDC0037ghVKTKqbVb1oimZcW4QTcQBzZly2zYoD6WNn6cNnTMfviM40kz5d4D1el1o*haJeY-0cIU962LBO2V9S&new=1
整合JPA-Hibernate
https://mp.weixin.qq.com/s?src=11×tamp=1574826244&ver=1999&signature=YDJUxTCpMElKCKgxcR5g0t0htf6dsf4fSWPXQyk-LK1Mk20f6wu2fuBhcUiOTrZU1PGZ90fFSgMNF9IbVTJiuSaVYoylnaE3EZmiGGwqqiVpWC-IKeLoq5lxBX9R1x&new=1
文件上傳
https://mp.weixin.qq.com/s?src=11×tamp=1574826268&ver=1999&signature=gUaat1p*hH5nNQCBkUdZsekBAZV2C2oxU6lWhlOfuGtF8N08tu836Sm3Z60IlLdPXncurcpEUylgwm8Jm6yz1RSWkqzeSDNdI1KHFh435WADs3UtSCfRb26OaHJueu&new=1