Java生產初學

蓝易云發表於2024-12-01

在Java開發中,註解(Annotation)是一種非常重要的後設資料機制,能夠讓開發者以宣告性、簡潔的方式為類、方法或欄位新增額外的行為或功能。特別是在Spring框架中,註解被廣泛應用於配置、自動裝配、事務管理等方面,大大簡化了程式碼的編寫和維護。以下是常用的Java註解,尤其是在Spring框架中非常常見的註解型別,以及它們的具體用途。

1. @Override

@Override註解用於表示當前方法是對父類方法的覆蓋。這個註解有助於編譯器檢查是否正確重寫了父類的方法。

  • 用途:在方法前加上@Override註解,可以防止因方法簽名錯誤導致的隱性問題。如果父類的方法被修改或者不存在,編譯器會給出警告。
@Override
public String toString() {
    return "Override Example";
}

2. @Autowired

@Autowired註解是Spring中的自動注入功能,用於自動將依賴注入到Spring管理的Bean中。

  • 用途:自動裝配Bean時,Spring會根據型別匹配依賴項。如果有多個候選Bean,Spring會嘗試透過@Qualifier來精確匹配。
  • 示例
@Autowired
private MyService myService;

Spring會自動將MyService型別的例項注入到myService欄位中。

3. @Component

@Component註解標記一個類為Spring的元件,這個類將被Spring容器管理,允許自動掃描和自動裝配。

  • 用途:在Spring的@Configuration類中,@Component被用於標註一個普通的類,表示它是一個Spring Bean,可以被容器自動掃描和管理。
  • 示例
@Component
public class MyComponent {
    // 類實現
}

4. @Service

@Service@Component的一個特化註解,通常用於標記服務層的類,表示這個類主要用於業務邏輯的實現。

  • 用途:與@Component一樣,@Service也是Spring管理的Bean,通常用於表示一個服務層的元件。
@Service
public class MyService {
    // 業務邏輯實現
}

5. @Repository

@Repository註解通常用於標記資料訪問層(DAO層)的類。這個註解告訴Spring該類負責與資料庫的互動。

  • 用途:標註類是資料訪問層元件,Spring會為其提供一些特性,例如自動丟擲DataAccessException
  • 示例
@Repository
public class MyRepository {
    // 資料庫操作實現
}

6. @Controller

@Controller註解標記一個類為控制器層的元件,通常用於Spring MVC架構中的Web請求處理。

  • 用途:用於Web層,處理HTTP請求,控制器方法會返回檢視名,Spring會根據檢視解析器渲染頁面。
@Controller
public class MyController {
    @RequestMapping("/home")
    public String home() {
        return "home";  // 返回檢視名稱
    }
}

7. @RestController

@RestController@Controller@ResponseBody的組合,通常用於建立RESTful風格的Web服務。

  • 用途:自動將方法的返回值序列化為JSON或XML,並作為HTTP響應體返回。
@RestController
public class MyRestController {
    @GetMapping("/api/data")
    public MyData getData() {
        return new MyData("Sample Data");
    }
}

8. @RequestMapping

@RequestMapping註解用於將HTTP請求對映到處理方法或控制器類上,可以指定請求路徑、HTTP方法等。

  • 用途:配置URL與控制器方法的對映,支援GET、POST、PUT、DELETE等HTTP方法。
@RequestMapping("/api/hello")
public String sayHello() {
    return "Hello, World!";
}

9. @GetMapping, @PostMapping, @PutMapping, @DeleteMapping

這些註解是@RequestMapping的快捷方式,分別用於處理不同型別的HTTP請求。

  • 用途:更加語義化,簡化程式碼。
@GetMapping("/api/items")
public List<Item> getItems() {
    return itemService.getAllItems();
}

@PostMapping("/api/items")
public Item createItem(@RequestBody Item item) {
    return itemService.saveItem(item);
}

10. @PathVariable

@PathVariable用於從URL路徑中提取變數。

  • 用途:在RESTful API中,常用於動態獲取URL路徑中的引數。
@GetMapping("/api/items/{id}")
public Item getItemById(@PathVariable("id") Long id) {
    return itemService.getItemById(id);
}

11. @RequestParam

@RequestParam用於獲取HTTP請求中的查詢引數。

  • 用途:可以透過URL中的查詢引數來傳遞資料。
@GetMapping("/api/items")
public List<Item> getItems(@RequestParam("category") String category) {
    return itemService.getItemsByCategory(category);
}

12. @RequestBody

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

  • 用途:通常與RESTful API結合使用,將請求的JSON或XML資料繫結到Java物件。
@PostMapping("/api/items")
public Item createItem(@RequestBody Item item) {
    return itemService.createItem(item);
}

13. @ResponseBody

@ResponseBody用於將方法的返回值直接寫入HTTP響應體中。

  • 用途:用於REST API的返回結果,可以自動將物件序列化為JSON格式。
@GetMapping("/api/data")
@ResponseBody
public MyData getData() {
    return new MyData("Sample Data");
}

14. @Valid

@Valid註解用於標記需要驗證的Bean或物件,通常與@RequestBody一起使用。

  • 用途:在Spring的控制器中,驗證請求體中的資料。
@PostMapping("/api/items")
public Item createItem(@RequestBody @Valid Item item) {
    return itemService.saveItem(item);
}

15. @Configuration

@Configuration用於宣告一個類為配置類,通常用於定義Spring Bean。

  • 用途:標識該類是Spring的配置類,其中的@Bean註解方法將會定義並註冊Spring Bean。
@Configuration
public class AppConfig {
    @Bean
    public MyService myService() {
        return new MyService();
    }
}

16. @Bean

@Bean註解用於方法上,表示該方法返回一個Bean,Spring容器會管理它。

  • 用途:定義一個Bean,使其能在Spring容器中被自動管理。
@Bean
public MyService myService() {
    return new MyService();
}

17. @Transactional

@Transactional用於宣告事務管理,確保一個方法執行時的原子性。

  • 用途:用於業務方法,表示該方法應該在事務環境中執行,支援回滾機制。
@Transactional
public void transferMoney(Account from, Account to, BigDecimal amount) {
    // 轉賬邏輯
}

總結

Java註解是Spring框架中不可或缺的一部分,它們不僅能夠簡化程式碼的配置,還能提高開發效率。在Spring應用中,開發者通常會使用上述註解來標記類和方法,使得開發過程更加簡潔和高效。

💡 註解總結表

註解用途
@Override重寫父類方法
@Autowired自動裝配依賴注入
@Component將類標記為Spring管理的Bean
@Service標記服務層元件
@Repository標記資料訪問層元件
@Controller標記控制器層元件
@RestController用於RESTful控制器
@RequestMapping對映HTTP請求到方法
@GetMapping對映GET請求
@PostMapping對映POST請求
@PathVariable獲取路徑中的引數
@RequestParam獲取請求引數
@RequestBody繫結請求體資料到方法引數
@ResponseBody返回資料直接作為響應體
                                    |

| @Valid | 驗證請求引數或物件 |
| @Configuration | 宣告配置類,定義Spring Bean |
| @Bean | 定義Spring Bean |
| @Transactional | 管理方法的事務,支援回滾和提交 |

這些註解大大簡化了開發過程,提高了程式碼的可維護性和可擴充套件性。

相關文章