Spring Boot Bean 介紹及常見應用
Spring Bean (註解 Annotation)
由 Spring IoC 容器管理的對象稱為 Bean 。Bean 是由 Spring IoC 容器實例化、組裝和管理的對象。應用 Annotation 可以將一個物件註冊成為 Bean。
使用 Annotation 的好處:
- 只要在任意的 class 開頭定義好,Spring 啟動後就會自動去找,不需要一個一個匯入
- 名稱就可以對應該 Class 要做甚麼或是被引入甚麼套件
- Spring 會自動根據 Annotation 去將該 class 設定成特定的用途或是引入特定套件。
依照不同應用層面分類:
1. 配置與啟動
| 1 | <dependency> | 
- @SpringBootApplication:- 結合了 @Configuration、@EnableAutoConfiguration和@ComponentScan,是啟動 Spring Boot 應用的核心註解。
 
- 結合了 
- @Configuration:- 標記一個類為配置類,通常用來定義 @Bean方法。
 
- 標記一個類為配置類,通常用來定義 
- @ComponentScan:- 自動掃描並註冊被 @Component、@Service、@Repository等註解的類別,通常在@SpringBootApplication中已隱式配置。
 
- 自動掃描並註冊被 
- @EnableAutoConfiguration:- 讓 Spring Boot 根據加入的依賴自動配置 Spring 應用程式,通常已被包含在 @SpringBootApplication中。
 
- 讓 Spring Boot 根據加入的依賴自動配置 Spring 應用程式,通常已被包含在 
2. 依賴注入 (DI)
- @Component:- 標記一個類別為 Spring 管理的組件(Bean),會自動加入到 Spring 容器中。
 
- @Service:- @Component的一種,表示 Service 業務邏輯層的類別。
 
- @Repository:- @Component的一種,表示 Dao 資料存取層的類別,並且會自動處理資料庫例外。
 
- @Controller:- @Component的一種, 表示 Controller 端口控制層的類別,包含資料取得或是配合前端模板 Thymeleaf 等前端頁面呈現。
 
- @Autowired:- 自動注入 Bean,各類別內部要使用已經註冊的 bean 就可以注入使用
 
- @Bean- 針對方法類進行 bean 注冊
 
- @Value:- 用來注入配置檔中的值,通常從 application.properties或application.yml中獲取。
 
- 用來注入配置檔中的值,通常從 
3. Web 與 RESTful API
| 1 | <dependency> | 
- @RestController:- 結合了 @Controller和@ResponseBody,表示這個類別是 RESTful Controller,方法返回的資料會直接轉換成 JSON 或 XML,用於純資料取得的 API 端口。
 
- 結合了 
- @RequestMapping:- 定義 Controller 中的 URL 規則,可以用於類別或方法上。也可以用更具體的註解如 @GetMapping,@PostMapping,@PutMapping,@DeleteMapping來指定 HTTP 方法。
 
- 定義 Controller 中的 URL 規則,可以用於類別或方法上。也可以用更具體的註解如 
- @PathVariable:- 用來擷取 URL 路徑中的參數,通常用在動態路徑中。
 
- @RequestParam:- 用來擷取 URL 中的查詢參數或表單資料。
 
- @RequestBody:- 用來將 HTTP 請求的 JSON 或 XML 資料直接轉換為 Java 物件,通常用於 POST/PUT 請求。
 
- @ResponseBody:- 將方法的返回值直接轉換為 JSON 或 XML 並返回給前端,適合 RESTful API。
 
4. ORM, 資料庫操作
| 1 | <dependency> | 
- @Entity:- 標記一個類別為 JPA 實體,代表資料庫中的一個表格。
 
- @Table:- 用來指定實體對應的資料表名稱,若不指定,預設會使用類名作為表名。
 
- @Id:- 指定實體的主鍵欄位。
 
- @GeneratedValue:- 指定主鍵的生成策略,常見的有 IDENTITY、SEQUENCE等。
 
- 指定主鍵的生成策略,常見的有 
- @Column:- 用來定義實體中屬性對應的資料庫欄位,包含名稱、長度等設定。
 
- @Repository:- 用於標記資料存取層,搭配 Spring Data JPA 時,可以自動生成 CRUD 操作。
 
- @Query:- 自定義查詢語句,適合需要複雜查詢的情境。
 
5. AOP 與異常處理
| 1 | <dependency> | 
- @Aspect:- 定義切面類別,用來實現橫切關注點。
 
- @Before、- @After、- @Around:- 用來在方法執行的前、後或周圍插入額外的邏輯。
 
- @ExceptionHandler:- 用於定義控制器中的異常處理方法。
 
6. 其他常用註解
- @Valid,- @Validated:- 1 
 2
 3
 4
 5- <dependency> 
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-validation</artifactId>
 </dependency>- 用於啟動 Bean 驗證,可限制參數或內部屬性輸入長度或是格式等等,通常和 @RequestBody或@RequestParam搭配使用。
 
- 用於啟動 Bean 驗證,可限制參數或內部屬性輸入長度或是格式等等,通常和 
Ref:
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Sean's Blog!
 評論
GiscusDisqus

