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