JAVA
撰寫RESTful API通常都是回傳json或xml,所以回傳無須交由View Resolver處理來返回頁面,返回的內容就是return 裡的內容,所以會在Controller的API方法前加上@Responsebody,在4.0後可改用@RestController,則該Controller類別中的方法回傳值都將預設為@ResponseBody,所以原本方法前的@ResponseBody就可以拿掉了。
@RestController = @ResponseBody + @Controller
@RestController無法返回指定頁面,而@Controller可以
JUnit5@Tag可用於從測試計劃中過濾測試用例。它可以幫助針對不同的環境,不同的用例或任何特定要求創建多個不同的測試計劃。可以通過僅在測試計劃中包括那些標記的測試或通過從測試計劃中排除其他測試來執行測試集。
透過 @Operation 標記,可以對 API 進行簡介,如swagger
定義返回值意義,配合Swagger,如 : 200、400
註解在類上, 為類提供讀寫屬性, 此外還提供了equals()、hashCode()、toString() 方法
註解在類上,為類提供一個無參的構造方法。
URI 就是標記網路上的資源,其中又包含 URN 和 URL
URN:就是定義某資源的身份
URL:就像是幫資源定位(地址)
針對URL裡面的參數,如get一筆資料
接收用form表單傳送過來的值、分頁等,可給defaultvalue 可以不用自己傳值
如Post
若在yml檔裡面有自定義屬性,在controller裡要取值時須加上此註解
yml自定義屬性後 需要類別名上家上此註解並且給予yml自定義屬性最高別名稱,且加上@Component才能運作可以省去,需要很多個@Value的麻煩
分頁專用@ 也可以免於使用者在URL直接輸入-1導致分頁出錯
若在bean裡有設置驗證,則在controller需要加入此註解表示此bean需要驗證,並且需要搭配BindingResult 這個類去得到驗證結果
做Controller的異常處理
Controller增強器,作用是给Controller控制器添加统一的操作或處理,可結合@ExceptionHandler用於全局異常處裡
關於Advice,在Spring的AOP中,是用來封裝一個切面所有屬性的,包括切入點和需要織入的切面邏輯。這裡ControllerAdvice也可以這麼理解,其抽象級別應該是用於對Controller進行切面環繞的,而具體的業務織入方式則是通過結合其他的註解來實現的。 @ControllerAdvice是在類上聲明的註解,其用法主要有三點:
1.全局異常處理:結合方法型註解@ExceptionHandler,用於捕獲Controller中拋出的指定類型的異常,從而達到不同類型的異常區別處理的目的。
2.全局數據預處理:結合方法型註解@InitBinder,用於request中自定義參數解析方式進行註冊,從而達到自定義指定格式參數的目的。
3.全局數據綁定:結合方法型註解@ModelAttribute,表示其註解的方法將會在目標Controller方法執行之前執行。
從上面的講解可以看出,@ControllerAdvice的用法基本是將其聲明在某個bean上,然後在該bean的方法上使用其他的註解來指定不同的織入邏輯。不過這裡@ControllerAdvice並不是使用AOP的方式來織入業務邏輯的,而是Spring內置對其各個邏輯的織入方式進行了內置支持。
在method 參數裡面加入此註解RequestParam 可改為json作傳遞,若無加此參數則為默認的form-data傳遞
用於設定註解使用範圍,Target通過ElementType來指定註解可使用的範圍
ElementType的用法
取值 註解使用範圍
METHOD 可用於方法上
TYPE 可用於類或者接口上
ANNOTATION_TYPE 可用於註解類型上(被@interface修飾的類型)
CONSTRUCTOR 可用於構造方法上
FIELD 可用於域上
LOCAL_VARIABLE 可用於局部變量上
PACKAGE 用於記錄java文件的package信息
PARAMETER 可用於參數上
用於指明修飾的註解的生存週期,即會保留到哪個階段。格式為:@Retention(RetentionPolicy.RUNTIME)
RetentionPolicy的取值包含以下三種:
SOURCE:源碼級別保留,編譯後即丟棄。
CLASS:編譯級別保留,編譯後的class文件中存在,在jvm運行時丟棄,這是默認值。
RUNTIME:運行級別保留,編譯後的class文件中存在,在jvm運行時保留,可以被反射調用。
指明修飾的註解,可以被例如javadoc此類的工具文檔化,只負責標記,沒有成員取值。
用於標註一個父類的註解是否可以被子類繼承,如果一個註解需要被其子類所繼承,則在聲明時直接使用@Inherited註解即可。如果沒有寫此註解,則無法被子類繼承。
作用是自定義一個新的註解
作用是定義Spring IOC容器中Bean的執行順序的優先級,而不是定義Bean的加載順序,Bean的加載順序不受@Order或Ordered接口的影響
在方法上加該註解會在項目啟動的時候執行該方法,也可以理解為在spring容器初始化的時候執行該方法,可作為一些數據的常規化加載。
在方法上加該註解會在項目結束前執行該方法,可能應用情境 - 系統登出等。
即被spring容器ApplicationContext感知並加載。表明這就是一個配置類。
定義:指示一個類聲明一個或者多個@Bean 聲明的方法並且由Spring容器統一管理,以便在運行時為這些bean生成bean的定義和服務請求的類。
用來自動化控管交易。
用來轉換 DB 中 date, timestamp 成日期字串。
若 Entity 使用 Java 8 date types ( LocalTime, LocalDate, and LocalDateTime … ),需要額外引入套件並啟用 Module。
攔截器的介紹
1.實現請求的預處理
2.實現請求的後處理
使用步驟:
1.實現攔截器
2.註冊攔截器