Spring Boot – 註解



本章將詳細討論 Spring Boot 中一些必要的註解。

介紹

註解是程式碼的元資料。元資料指的是關於資料的資料。它們通常放置在類、方法或變數宣告的頂部。註解是一些以@開頭的字母數字值。在類中放置註解不會影響程式的編譯或執行。當註解用於配置時,就不需要 XML 檔案了。

註解@Component, @Configuration, @SpringBootApplication, @EnableAutoConfiguration, @ComponentScan, @AutoConfigurationPackage, @ConditionalOnClass, @ConditionalOnMissingBean, @ConditionalOnProperty已經在Spring Boot - 配置/自動配置章節中討論過了。

如何開啟 Spring 註解?

要開啟 Spring 註解,請在 XML 配置檔案中的 bean 宣告之前新增以下<context:annotation-config />。

註解

@RestController

@RestController 將一個類標記為 RESTful web 請求的控制器。它結合了@Controller@ResponseBody的功能。以下是它的作用

  • @Controller− 將類標記為 Spring MVC 控制器,負責處理傳入的 HTTP 請求。

  • @ResponseBody− 告訴 Spring 將控制器的返回值直接序列化到 HTTP 響應體中,通常以 JSON 或 XML 等格式。

HTTP 相關注解

@RequestMapping

@RequestMapping 註解用於將 web 請求對映到控制器類中的特定處理程式方法。它充當傳入 HTTP 請求和負責處理它們的 方法之間的橋樑。可以使用method屬性指定方法處理的 HTTP 方法(GET、POST、PUT、DELETE 等)。

在最新的 Spring Boot 版本中,首選方式是使用快捷註解而不是@RequestMapping

  • @GetMapping@RequestMapping(method = RequestMethod.GET)的快捷方式

  • @PostMapping@RequestMapping(method = RequestMethod.POST)的快捷方式

  • @PutMapping@RequestMapping(method = RequestMethod.PUT)的快捷方式

  • @DeleteMapping@RequestMapping(method = RequestMethod.DELETE)的快捷方式

  • @PatchMapping@RequestMapping(method = RequestMethod.PATCH)的快捷方式

Spring 目前支援五種內建註解來處理不同型別的傳入 HTTP 請求方法,分別是 GET、POST、PUT、DELETE 和 PATCH。

@PathVariable

@PathVariable 將方法引數繫結到 URI 模板變數。URI 模板變數是 URI 中用花括號括起來的引數,可以在解析 URI 之前進行替換。

例如,在 URI 模板

'/users/{id}/{? query1,query2}'

中有三個變數

  • id − 必需的路徑變數

  • query1 − 可選的查詢變數

  •  
  • query2 − 另一個可選的查詢變數

@RequestParam

@RequestParam 將方法引數繫結到請求引數。

@RequestBody

@RequestBody 將方法引數繫結到 HTTP 請求的主體。

@ModelAttribute

@ModelAttribute 將方法引數繫結到模型屬性。在 Spring Boot 中,模型變數是一個介面,用於儲存從控制器傳遞到檢視的資料。此介面Model位於org.springframework.ui包中。

JPA 相關注解

@Repository

@Repository 將類標記為資料訪問物件 (DAO)。此類負責對資料庫執行 CRUD 操作。

@Entity

@Entity 將類標記為 JPA 實體。

@Id

@Id 指定實體的主鍵。

@GeneratedValue

@GeneratedValue 指定如何生成主鍵。

@GeneratedValue(strategy = GenerationType.IDENTITY)

@Column

Column 將欄位對映到資料庫列。

@Transactional

@Transactional 將方法或類標記為事務性的。它確保方法(或整個類)在事務上下文中執行。當您使用@Transactional標記方法時,Spring 會自動為該方法處理事務管理。當您使用@Transactional註釋方法時,Spring 會在方法開始執行之前啟動事務。如果方法成功完成(沒有異常),Spring 會提交事務(即儲存對資料庫的更改)。如果發生異常,Spring 會回滾事務。要使用@Transactional,您需要在 Spring Boot 應用程式中配置事務管理。將@EnableTransactionManagement新增到您的主應用程式類中。

其他重要註解

@Value

此註解用於為變數和方法引數分配預設值。它還可以用於從屬性檔案或環境變數注入屬性值。

@EnableCaching

@EnableCaching 啟用快取支援。當您將@EnableCaching新增到配置類時,Spring 會掃描應用程式以查詢使用快取相關注解(例如@Cacheable, @CachePut, @CacheEvict 或 @Caching)註釋的方法。

@EnableAsync

@EnableAsync 啟用非同步方法執行的支援。使用@Async註釋的方法將在單獨的執行緒中執行,允許呼叫者繼續執行而不必等待方法完成。

廣告