目錄
一、所有注解按照使用位置劃分(類、方法、參數)
1. 類級別注解
2. 方法級別注解
3. 參數級別注解
4. 字段/返回值注解
二、按照使用層級劃分(業務層、視圖層、控制層)?
1、控制層(Controller Layer)
2、業務層(Service Layer)
3、數據層(Data Layer)
4、視圖層(View Layer)
5、其他輔助注解
一、所有注解按照使用位置劃分(類、方法、參數)
1. 類級別注解
作用范圍:標記在類上,定義類的基本行為或全局配置。
注解 | 功能說明 |
---|---|
@Controller | 聲明類為控制器,處理HTTP請求,通常配合視圖解析器返回視圖名稱。 |
@RestController | @Controller ?+?@ResponseBody ,用于REST API,直接返回數據(JSON/XML)。 |
@RequestMapping | 定義類的基礎請求路徑(如@RequestMapping("/api") ),方法級路徑繼承此路徑。 |
@ControllerAdvice | 定義全局異常處理類,結合@ExceptionHandler 處理多個控制器的異常。 |
@RestControllerAdvice | @ControllerAdvice ?+?@ResponseBody ,用于REST全局異常處理。 |
@CrossOrigin | 允許類中所有方法的跨域請求(可指定來源、方法、頭信息等)。 |
@SessionAttributes | 聲明類中需要跨請求共享的模型屬性(如@SessionAttributes("user") )。 |
@EnableWebMvc | 啟用Spring MVC的默認配置(如消息轉換器、視圖解析器),通常用在配置類。 |
@ComponentScan | 配置類上指定掃描的包路徑,自動注冊組件(如控制器、服務等)。 |
2. 方法級別注解
作用范圍:標記在方法上,定義方法的行為或處理邏輯。
注解 | 功能說明 |
---|---|
@RequestMapping | 定義方法的請求路徑和HTTP方法(如@RequestMapping(value="/test", method=RequestMethod.GET) )。 |
@GetMapping | 簡化GET請求映射(等價于@RequestMapping(method=GET) )。 |
@PostMapping | 簡化POST請求映射。 |
@PutMapping | 簡化PUT請求映射。 |
@DeleteMapping | 簡化DELETE請求映射。 |
@PatchMapping | 簡化PATCH請求映射。 |
@ExceptionHandler | 在控制器或@ControllerAdvice 類中定義異常處理方法。 |
@ResponseBody | 方法返回值直接寫入HTTP響應體(如返回JSON數據)。 |
@ResponseStatus | 指定HTTP響應狀態碼(如@ResponseStatus(HttpStatus.NOT_FOUND) )。 |
@ModelAttribute | 標記方法,在控制器方法執行前運行,向模型添加屬性(如初始化表單對象)。 |
@InitBinder | 自定義數據綁定邏輯(如注冊屬性編輯器)。 |
@Async | 聲明方法為異步執行(需配合@EnableAsync 啟用)。 |
3. 參數級別注解
作用范圍:標記在方法參數上,用于綁定請求數據。
注解 | 功能說明 |
---|---|
@RequestParam | 從請求參數中提取值(支持默認值和別名)。 |
@PathVariable | 從URL路徑模板中提取變量(如/user/{id} 中的id )。 |
@RequestBody | 將請求體內容(如JSON)反序列化為Java對象。 |
@RequestHeader | 從請求頭中提取值。 |
@CookieValue | 從Cookie中提取值。 |
@ModelAttribute | 將請求參數綁定到模型對象(常用于表單提交)。 |
@Valid ?/?@Validated | 觸發數據驗證(如JSR 303校驗)。 |
@SessionAttribute | 從會話中提取已存在的屬性值(需配合@SessionAttributes 使用)。 |
4. 字段/返回值注解
作用范圍:標記在字段或方法返回值上。
注解 | 功能說明 |
---|---|
@ResponseBody | 可標記方法,表示返回值直接寫入響應體(與類級別@RestController 等價)。 |
@ResponseStatus | 也可標記異常類,指定拋該異常時的HTTP狀態碼。 |
二、按照使用層級劃分(業務層、視圖層、控制層)?
1、控制層(Controller Layer)
核心注解:處理 HTTP 請求和響應,定義路由和請求映射
注解 | 作用說明 |
---|---|
@Controller | 標記類為控制器,處理 HTTP 請求,通常與視圖技術(如 JSP、Thymeleaf)結合使用 |
@RestController | @Controller ?+?@ResponseBody ?的組合,用于 RESTful API(直接返回數據) |
@RequestMapping | 通用請求映射(可指定?method 、path ?等參數) |
@GetMapping | 簡化?GET ?請求映射 (@RequestMapping(method = RequestMethod.GET) ) |
@PostMapping | 簡化?POST ?請求映射 |
@PutMapping | 簡化?PUT ?請求映射 |
@DeleteMapping | 簡化?DELETE ?請求映射 |
@PatchMapping | 簡化?PATCH ?請求映射 |
@PathVariable | 從 URI 路徑中提取參數(如?/users/{id} ) |
@RequestParam | 從 URL 查詢參數中提取值(如??name=John ) |
@RequestBody | 將 HTTP 請求體(如 JSON)綁定到方法參數對象 |
@ResponseBody | 將方法返回值直接寫入 HTTP 響應體(不經過視圖解析器) |
@ExceptionHandler | 在控制器內定義異常處理方法 |
@CrossOrigin | 配置跨域請求支持(CORS) |
@InitBinder | 自定義請求參數綁定規則 |
2、業務層(Service Layer)
核心注解:實現業務邏輯(由 Spring Core 管理)
注解 | 作用說明 |
---|---|
@Service | 標記類為業務邏輯組件(Service 層) |
@Transactional | 聲明事務管理(通常加在 Service 層方法上) |
3、數據層(Data Layer)
核心注解:數據訪問和持久化(由 Spring Data/JPA 管理)
注解 | 作用說明 |
---|---|
@Repository | 標記類為數據訪問組件(DAO 層) |
@Entity | 標記 JPA 實體類 |
@Table | 指定實體類對應的數據庫表 |
@Id | 標記實體類的主鍵字段 |
@GeneratedValue | 配置主鍵生成策略 |
@Column | 配置實體類字段與數據庫列的映射 |
4、視圖層(View Layer)
核心注解:處理視圖渲染和數據展示
注解 | 作用說明 |
---|---|
@ModelAttribute | 1. 將方法返回值添加到模型(用于視圖渲染) 2. 從模型綁定數據到方法參數 |
@SessionAttributes | 聲明控制器使用的會話屬性(跨請求共享數據) |
@CookieValue | 從 HTTP Cookie 中提取值 |
@RequestHeader | 從 HTTP 請求頭中提取值 |
5、其他輔助注解
注解 | 作用說明 |
---|---|
@Component | 通用組件標記(非 MVC 層,由 Spring Core 管理) |
@Configuration | 標記配置類(定義 Bean) |
@Bean | 聲明方法返回的對象由 Spring 容器管理 |
@Autowired | 自動注入依賴(按類型) |
@Qualifier | 按名稱指定注入的 Bean |
@Profile | 指定配置或 Bean 生效的環境 |
@Value | 注入配置文件中的屬性值(如?@Value("${app.name}") ) |