springboot常用註解大全(超詳細, 30個)

来源:https://www.cnblogs.com/xxctx/p/18303267
-Advertisement-
Play Games

Spring Boot註解主要用於簡化配置、自動裝配組件和實現聲明式服務。以下是詳細的介紹: 1、Springboot註解 核心註解 1. @SpringBootApplication 作用: 標註一個主程式類,表明這是一個Spring Boot應用程式的入口。 功能: 這是一個複合註解,組合了@C ...


Spring Boot註解主要用於簡化配置、自動裝配組件和實現聲明式服務。以下是詳細的介紹:

1、Springboot註解

核心註解

1. @SpringBootApplication

  • 作用: 標註一個主程式類,表明這是一個Spring Boot應用程式的入口。
  • 功能: 這是一個複合註解,組合了@Configuration@EnableAutoConfiguration@ComponentScan
    • @Configuration: 標識一個類作為配置類,類似於Spring XML配置文件。
    • @EnableAutoConfiguration: 啟用Spring Boot的自動配置機制,根據項目中的依賴和應用上下文自動配置Spring應用程式。
    • @ComponentScan: 自動掃描指定包及其子包中的Spring組件。
  • 示例:
    @SpringBootApplication
    public class MyApplication {
        public static void main(String[] args) {
            SpringApplication.run(MyApplication.class, args);
        }
    }
    

自動配置註解

2. @EnableAutoConfiguration

  • 作用: 啟用Spring Boot的自動配置機制,根據項目中的依賴和應用上下文自動配置Spring應用程式。
  • 細節: 它會嘗試根據添加的依賴和項目中的配置自動配置Spring Bean。例如,如果項目中有HSQLDB的依賴,Spring Boot會自動配置一個記憶體資料庫。
  • 示例:
    @EnableAutoConfiguration
    public class MyApplication {
        public static void main(String[] args) {
            SpringApplication.run(MyApplication.class, args);
        }
    }
    

3. @Configuration

  • 作用: 標註一個類作為配置類,相當於一個Spring XML配置文件。
  • 細節: 配置類可以包含一個或多個@Bean註解的方法,這些方法會返回要註冊到Spring應用上下文中的Bean。
  • 示例:
    @Configuration
    public class AppConfig {
        @Bean
        public MyService myService() {
            return new MyServiceImpl();
        }
    }
    

組件掃描和註入註解

4. @ComponentScan

  • 作用: 指定要掃描的包,以便發現和註冊Spring組件。
  • 細節: 預設情況下,@ComponentScan會掃描主應用類所在的包及其子包。
  • 示例:
    @ComponentScan(basePackages = "com.example")
    public class MyApplication {
    }
    

5. @Component

  • 作用: 將一個類標識為Spring組件(Bean),可以被Spring容器自動檢測和註冊。
  • 細節: @Component是一個通用的註解,可以用來標註任何Spring管理的Bean。
  • 示例:
    @Component
    public class MyComponent {
    }
    

6. @Service

  • 作用: 標識服務層組件,實際上是@Component的一個特化,用於表示業務邏輯服務。
  • 細節: 用於標識服務層的類,這些類通常包含業務邏輯。
  • 示例:
    @Service
    public class MyService {
    }
    

7. @Repository

  • 作用: 標識持久層組件,實際上是@Component的一個特化,用於表示數據訪問組件

數據訪問組件(Data Access Component)通常是指在軟體系統中負責數據訪問和持久化的部分或模塊。在典型的企業應用程式中,數據訪問組件通常涉及與資料庫交互、執行數據操作(如增刪改查)、數據轉換和持久化等任務。

  • 示例:
    @Repository
    public class MyRepository {
    }
    

8. @Controller

  • 作用: 標識控制層組件,實際上是@Component的一個特化,用於表示Web控制器。
  • 細節: 用於標識Spring MVC控制器,處理Web請求並返回視圖。
  • 示例:
    @Controller
    public class MyController {
    }
    

9. @RestController

  • 作用: 標識一個RESTful Web服務的控制器,實際上是@Controller@ResponseBody的結合。
  • 細節: 返回的對象會自動序列化為JSON或XML,並寫入HTTP響應體中。
  • 示例:
    @RestController
    public class MyRestController {
    }
    

數據綁定和驗證註解

10. @RequestMapping

  • 作用: 映射HTTP請求到處理方法上(GET、POST、PUT、DELETE等)。
  • 示例:
    @Controller
    public class MyController {
        @RequestMapping("/hello")
        public String sayHello() {
            return "hello";
        }
    }
    

11. @GetMapping

  • 作用: 映射HTTP GET請求到處理方法上。
  • 示例:
    @RestController
    public class MyRestController {
        @GetMapping("/users")
        public List<User> getUsers() {
            return userService.getAllUsers();
        }
    }
    

12. @PostMapping

  • 作用: 映射HTTP POST請求到處理方法上。
  • 示例:
    @RestController
    public class MyRestController {
        @PostMapping("/users")
        public User
    

13. @ResponseBody

  • 作用: 將方法的返回值轉換為指定格式(如JSON、XML)作為HTTP響應的內容返回給客戶端。
  • 細節: 常用於RESTful服務中,標識方法返回的對象不是視圖名稱,而是直接寫入HTTP響應體中的數據。
  • 示例:
    @RestController
    public class MyRestController {
        @GetMapping("/hello")
        @ResponseBody
        public String sayHello() {
            return "Hello, World!";
        }
    }
    

14. @RequestBody

  • 作用: 將HTTP請求體的內容(如JSON、XML等)映射到一個Java對象。
  • 細節: 通常用於POST請求中,將客戶端發送的數據綁定到方法的參數上。
  • 示例:
    @RestController
    public class MyRestController {
        @PostMapping("/users")
        public ResponseEntity<String> addUser(@RequestBody User user) {
            // 處理用戶添加邏輯
            return ResponseEntity.ok("User added successfully");
        }
    }
    

15. @PathVariable

  • 作用: 從URI路徑中提取參數值,將其映射到方法的參數上。
  • 細節: 常用於RESTful服務中,允許動態地將URL中的部分作為方法參數使用。
  • 示例:
    @RestController
    public class MyRestController {
        @GetMapping("/users/{userId}")
        public ResponseEntity<User> getUserById(@PathVariable Long userId) {
            // 根據userId查詢用戶信息
            User user = userService.getUserById(userId);
            return ResponseEntity.ok(user);
        }
    }
    

16. @RequestParam

  • 作用: 用於從請求中獲取參數的值。
  • 細節: 可以指定參數的預設值,是否必需等屬性。適用於處理查詢參數或表單數據。
  • 示例:
    @RestController
    public class MyRestController {
        @GetMapping("/users")
        public ResponseEntity<User> getUserByName(@RequestParam String username) {
            // 根據用戶名查詢用戶信息
            User user = userService.getUserByUsername(username);
            return ResponseEntity.ok(user);
        }
    }
    

這些註解是Spring MVC和Spring Boot中常用的數據綁定和處理註解,幫助開發者更方便地處理HTTP請求和響應,實現靈活的介面設計和數據交互。

數據訪問註解

17. @Entity

  • 作用: 標識一個JPA實體。
  • 細節: 用於定義一個與資料庫表映射的持久化類。
  • 示例:
    @Entity
    public class User {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
        private String name;
    }
    

18. @Table

  • 作用: 指定實體對應的資料庫表名稱。
  • 細節: 如果類名與資料庫表名不同,可以使用@Table註解進行指定。
  • 示例:
    @Entity
    @Table(name = "users")
    public class User {
        // fields and methods
    }
    

其他常用註解

19. @Value

  • 作用: 用於將外部屬性值註入到Spring Bean中。
  • 細節: 可以用於註入屬性文件中的值、系統環境變數、系統屬性等。
  • 示例:
    @Value("${my.property}")
    private String myProperty;
    

20. @Autowired

  • 作用: 自動裝配Bean,進行依賴註入。
  • 細節: Spring會自動滿足Bean的依賴。可以用於欄位、構造函數和方法上。
  • 示例:
    @Service
    public class MyService {
        @Autowired
        private MyRepository myRepository;
    }
    

21. @Bean

  • 作用: 用於定義一個Spring Bean。
  • 細節: 通常用於配置類中,定義的方法返回的對象會被註冊為Spring容器中的Bean。
  • 示例:
    @Configuration
    public class AppConfig {
        @Bean
        public MyService myService() {
            return new MyServiceImpl();
        }
    }
    

22. @Conditional

  • 作用: 根據特定條件創建Bean。
  • 細節: 可以與自定義條件類一起使用,只有在條件滿足時,Spring才會創建該Bean。
  • 示例:
    @Bean
    @Conditional(MyCondition.class)
    public MyService myService() {
        return new MyServiceImpl();
    }
    

23. @Primary

  • 作用: 指定當一個介面有多個實現時,優先選擇的Bean。
  • 示例:
    @Service
    @Primary
    public class PrimaryService implements MyService {
    }
    

24. @Qualifier

  • 作用: 配合@Autowired使用,用於指定註入的Bean的名稱或ID。
  • 示例:
    @Service
    public class MyService {
        @Autowired
        @Qualifier("myRepositoryImpl")
        private MyRepository myRepository;
    }
    

25. @Lazy

  • 作用: 延遲初始化Bean,只有在首次使用時才創建Bean。
  • 示例:
    @Service
    @Lazy
    public class LazyService {
    }
    

26. @Scope

  • 作用: 指定Bean的作用域(單例、多例、請求、會話等)。
  • 示例:
    @Service
    @Scope("prototype")
    public class PrototypeService {
    }
    

其他註解

簡化POJO開發的註解

這三個註解通常與Lombok(一種Java庫)結合使用,用於簡化POJO(Plain Old Java Object)的開發。

1. @Data

  • 作用: @Data 是一個複合註解,集成了 @ToString@EqualsAndHashCode@Getter@Setter@RequiredArgsConstructor 的功能。

  • 功能:

    • @ToString: 自動生成 toString() 方法,包含所有欄位。
    • @EqualsAndHashCode: 自動生成 equals()hashCode() 方法,基於所有非靜態和非瞬態欄位。
    • @Getter@Setter: 自動生成欄位的 getter 和 setter 方法。
    • @RequiredArgsConstructor: 自動生成包含必需欄位的構造方法。
  • 示例:

    import lombok.Data;
    
    @Data
    public class User {
        private Long id;
        private String username;
        private String email;
    }
    

    編譯時,Lombok會自動生成如下代碼:

    public class User {
        private Long id;
        private String username;
        private String email;
    
        // 自動生成的 toString(), equals(), hashCode(), getter 和 setter 方法
        // 以及包含所有欄位的構造方法
    }
    

2. @AllArgsConstructor

  • 作用: 自動生成包含所有欄位的構造方法。

  • 示例:

    import lombok.AllArgsConstructor;
    import lombok.Data;
    
    @Data
    @AllArgsConstructor
    public class User {
        private Long id;
        private String username;
        private String email;
    }
    

    編譯時,Lombok會自動生成如下構造方法:

    public User(Long id, String username, String email) {
        this.id = id;
        this.username = username;
        this.email = email;
    }
    

3. @NoArgsConstructor

  • 作用: 自動生成無參構造方法。

  • 示例:

    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    @Data
    @NoArgsConstructor
    public class User {
        private Long id;
        private String username;
        private String email;
    }
    

    編譯時,Lombok會自動生成如下無參構造方法:

    public User() {
        // 空構造方法
    }
    

文章到這裡就這束了!~

其他文章地址:

快速入門,springboot知識點彙總

springboot常用註解大全(超詳細, 30個)

springboot websocket知識點彙總

spring cloud 知識點彙總, 待更


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 React是前端開發領域中最受歡迎的JavaScript庫之一,但有時候在編寫React應用程式時,可能陷入一些不佳的習慣和錯誤做法。這些不佳的習慣可能導致性能下降、代碼難以維護,以及其他問題。在本文中,我們將探討日常工作中應該避免的9個壞React習慣,並提供相關示例代碼來說明這些問題以及如 ...
  • 這篇文章介紹了Reflect的優點及其靜態方法的使用,並通過Proxy實現了一個觀察者模式示例,展示瞭如何利用Reflect簡化和規範對象操作,避免傳統方式的局限。 ...
  • ‍ 寫在開頭 點贊 + 收藏 學會 單獨寫一篇4.3主要是因為搞它心力交瘁,篇幅過長,記錄一下解決過程。 拒絕原因 Guideline 4.3(a) - Design - Spam We noticed your app shares a similar binary, meta ...
  • 摘要:本文詳細介紹Nuxt.js中的useAsyncData組合式函數,它用於在服務端渲染(SSR)過程中非同步獲取數據,確保客戶端正確水合,避免重覆請求。內容包括基本概念、參數說明(key, handler, options)、示例用法、如何監聽參數變化自動刷新數據及返回值詳解,展示了在頁面組件中使... ...
  • 定義 裝飾模式(Decorator Pattern),又稱為包裝模式,是一種結構型設計模式。它允許在不改變現有對象結構的情況下,動態地添加新的功能。通過將每個功能封裝在單獨的裝飾器類中,並且這些裝飾器類通過引用原始對象來實現功能的組合,從而提供了靈活性和可擴展性的優勢。裝飾模式避免了通過繼承方式增加 ...
  • 沒想到自己的小破站也逃不掉被攻擊的命,分分鐘就給我刷欠費了。 本來不想寫這篇文章的,但看到好多大佬(小林coding、 JavaGuide)近期cdn都被盜刷了。 還是來提醒下大家,防火防盜防cdn流量盜刷 事故時間:2024年7月5日晚8點左右 事故現場:好不容易到了周五,想著第二天就周末了,和朋 ...
  • 本文主要介紹了日誌的定義和作用,以及 Python 內置日誌處理的 logging 模塊,同時簡單說明瞭日誌等級和 logging 模塊的簡易使用方法。 ...
  • 本文主要介紹了Python中創建自定義類時鴨子類型的基本定義、特點和應用場景,同時列舉了“file-like object“的例子對鴨子類型進行了說明。 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...