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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...