国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Spring Boot 常用注解全解析:20 個高頻注解 + 使用場景實例

開發
這篇文章,我把 Spring Boot 開發中最常用的 20 個注解一次性講透,每個注解都配上真實業務場景的代碼示例,看完讓你對注解的使用豁然開朗,開發效率直接翻倍!

還在對著 Spring Boot 項目里的注解一臉懵?@Controller 和 @RestController 到底有啥區別?@Autowired 注入總出問題該咋整?別慌!今天這篇文章,我把 Spring Boot 開發中最常用的 20 個注解一次性講透,每個注解都配上真實業務場景的代碼示例,看完讓你對注解的使用豁然開朗,開發效率直接翻倍!

一、Spring Boot 核心注解:項目啟動與配置

1. @SpringBootApplication:項目入口的 “門面擔當”

這是 Spring Boot 項目的核心注解,放在主啟動類上,一眼就能認出這是個 Spring Boot 項目。它其實是 @Configuration、@EnableAutoConfiguration、@ComponentScan 三個注解的組合體。

@SpringBootApplication


public class MyApplication {


   public static void main(String[] args) {


       SpringApplication.run(MyApplication.class, args);


   }


}

作用:開啟自動配置、組件掃描和配置類功能,少了它 Spring Boot 就沒法正常啟動。

2. @Configuration:替代 XML 配置文件

標記一個類是配置類,相當于傳統的 XML 配置文件,里面可以用 @Bean 注解定義 bean。

@Configuration


public class AppConfig {


   // 定義一個 RestTemplate 實例,全局可用


   @Bean


   public RestTemplate restTemplate() {


       return new RestTemplate();


   }


}

優勢:用 Java 代碼寫配置,比 XML 更靈活,還能加邏輯判斷。

3. @ComponentScan:指定組件掃描范圍

告訴 Spring 要掃描哪些包下的組件(@Controller、@Service 等),@SpringBootApplication 已經包含了它,默認掃描當前類所在的包及其子包。

// 手動指定掃描范圍


@SpringBootApplication


@ComponentScan(basePackages = {"com.example.controller", "com.example.service"})


public class MyApplication {


   // ...


}

坑點:如果你的組件不在默認掃描范圍內,就會注入失敗,此時必須手動指定。

二、Web 開發注解:處理 HTTP 請求

4. @Controller:頁面交互的控制器

標記一個類是 Spring MVC 的控制器,負責接收用戶請求并返回視圖(如 HTML 頁面)。

@Controller


public class UserController {


   // 處理 GET 請求,返回 user.html 頁面


   @GetMapping("/user")


   public String getUser(Model model) {


       model.addAttribute("name", "張三"); // 向頁面傳遞數據


       return"user"; // 返回 templates 目錄下的 user.html


   }


}

5. @RestController:API 接口的 “懶人注解”

這是 @Controller + @ResponseBody 的組合,返回的是 JSON 數據,不用再在每個方法上寫 @ResponseBody 了。

@RestController


public class ApiController {


   // 直接返回 JSON 數據


   @GetMapping("/api/user")


   public User getUser() {


       User user = new User();


       user.setName("李四");


       user.setAge(25);


       return user; // 自動轉為 JSON


   }


}

適用場景:前后端分離項目的 API 接口,現在 90% 的 Spring Boot 項目都用它。

6. @RequestMapping:請求映射的 “萬能注解”

指定方法處理哪些 HTTP 請求,可用于類和方法上,支持 GET、POST 等所有請求方式。

// 類上指定統一前綴

@RequestMapping("/user")


@RestController

public class UserController {


   // 處理 GET 請求:/user/1

   @RequestMapping(value = "/{id}", method = RequestMethod.GET)


   public User getUserById(@PathVariable Long id) {


       // ...

   }


}

簡化注解:

  • @GetMapping:處理 GET 請求(常用)
  • @PostMapping:處理 POST 請求(常用)
  • @PutMapping:處理 PUT 請求
  • @DeleteMapping:處理 DELETE 請求

7. @PathVariable:獲取 URL 路徑參數

從 URL 路徑中提取參數,比如從 /users/123 中獲取 123 這個 id。

@GetMapping("/users/{id}")


public User getUser(@PathVariable Long id) {


   return userService.findById(id);


}


// 多個參數

@GetMapping("/users/{id}/orders/{orderId}")


public Order getOrder(@PathVariable Long id, @PathVariable Long orderId) {


   // ...

}

8. @RequestParam:獲取 URL 查詢參數

獲取 URL 中?后面的參數,比如從 /users?page=1&size=10 中獲取 page 和 size。

@GetMapping("/users")


public Page<User> getUsers(

   @RequestParam(defaultValue = "1") Integer page, // 默認值 1

   @RequestParam(defaultValue = "10") Integer size) {


   return userService.findPage(page, size);


}

常用屬性:

  • required:是否必填(默認 true,不填會報錯)
  • defaultValue:默認值(設置后 required 自動變為 false)

9. @RequestBody:接收 JSON 請求體

接收請求體中的 JSON 數據,并把它轉換成對應的 Java 對象,POST、PUT 請求傳遞復雜對象時常用。

@PostMapping("/users")


public User addUser(@RequestBody User user) {


   // user 已經是轉換好的對象,直接保存即可

   return userService.save(user);


}

注意:前端必須設置 Content-Type: application/json,否則會報錯。

三、依賴注入注解:管理組件關系

10. @Autowired:自動注入依賴

讓 Spring 自動找到合適的 bean 并注入進來,不用自己 new 對象了。

@Service

public class UserService {


   // 自動注入 UserDao

   @Autowired

   private UserDao userDao;


   public User getUserById(Long id) {


       return userDao.findById(id);


   }


}

坑點:如果有多個同類型的 bean,直接用 @Autowired 會報錯,此時要配合 @Qualifier 指定名稱。

@Autowired

@Qualifier("userDaoImpl") // 指定注入名稱為 userDaoImpl 的 bean

private UserDao userDao;

11. @Service:標記業務邏輯層

告訴 Spring 這是一個服務層組件,負責處理業務邏輯,會被自動掃描并注入。

@Service

public class UserService {


   // 業務邏輯處理

}

同類注解:@Repository(數據訪問層)、@Component(通用組件),它們都是為了讓代碼分層更清晰。

12. @Resource:按名稱注入依賴

和 @Autowired 類似,但它默認按名稱匹配,而 @Autowired 默認按類型匹配。

@Service

public class OrderService {


   // 按名稱注入(name 可省略,默認取屬性名)

   @Resource(name = "orderDao")


   private OrderDao orderDao;


}

小技巧:如果你更在意 bean 的名稱,用 @Resource 更方便。

四、數據訪問注解:操作數據庫

13. @Transactional:聲明式事務管理

加在方法或類上,讓方法執行在事務中,出現異常時自動回滾,保證數據一致性。

@Service

public class OrderService {


   // 該方法在事務中執行

   @Transactional

   public void createOrder(Order order) {


       orderDao.save(order); // 保存訂單

       inventoryService.reduceStock(order.getProductId(), order.getNum()); // 扣減庫存

       // 如果上面的代碼拋出異常,事務會回滾,訂單和庫存操作都取消

   }


}

常用屬性:

  • rollbackFor:指定哪些異常會觸發回滾(默認只有 RuntimeException 才回滾)
  • propagation:事務傳播行為(如 REQUIRED、SUPPORTS 等)

14. @Mapper:MyBatis 接口映射

標記一個接口是 MyBatis 的 Mapper 接口,不用寫實現類就能直接調用。

@Mapper

public interface UserMapper {


   // 直接寫方法,SQL 在 XML 中或用注解寫

   User selectById(Long id);


}

替代方案:在主啟動類上用 @MapperScan 掃描整個包,不用每個接口都加 @Mapper。

@SpringBootApplication

@MapperScan("com.example.mapper") // 掃描所有 Mapper 接口

public class MyApplication {


   // ...

}

五、配置與參數綁定

15. @Value:讀取配置文件的值

直接讀取 application.properties 或 application.yml 中的配置,注入到變量中。

# application.properties

app.name=我的應用


app.version=1.0.0
@Component

public class AppInfo {


   // 注入配置值

   @Value("${app.name}")


   private String appName;


   @Value("${app.version}")


   private String appVersion;


}

小技巧:可以用 {} 拼接字符串,比如 @Value("{app.name}-${app.version}")。

16. @ConfigurationProperties:批量綁定配置

批量讀取配置文件中的屬性,綁定到一個類的字段上,比 @Value 更適合讀取多個相關配置。

# 數據庫配置


db.url=jdbc:mysql://localhost:3306/test

db.username=root


db.password=123456
@Component

@ConfigurationProperties(prefix = "db") // 配置前綴

public class DbConfig {


   private String url;


   private String username;


   private String password;


   // getter 和 setter 必須有,否則無法綁定

}

優勢:支持嵌套屬性、校驗(加 @Validated),還能在 IDE 中自動提示配置項。

六、其他高頻注解

17. @ResponseBody:返回 JSON 數據

讓方法返回的對象自動轉為 JSON 數據,一般用在 @Controller 類的方法上。

@Controller

public class ApiController {


   // 返回 JSON 數據

   @GetMapping("/api/user")


   @ResponseBody

   public User getUser() {


       // ...

   }


}

注意:@RestController 已經包含了它,所以不用重復加。

18. @PathVariable:獲取 URL 路徑參數

從 URL 路徑中提取參數,比如從 /users/123 中獲取 123 這個 id。

@GetMapping("/users/{id}")


public User getUser(@PathVariable Long id) {


   return userService.findById(id);


}

19. @RequestParam:獲取查詢參數

獲取 URL 中?后面的參數,比如從 /users?page=1&size=10 中獲取 page 和 size。

@GetMapping("/users")


public Page<User> getUsers(

   @RequestParam(defaultValue = "1") Integer page,


   @RequestParam(defaultValue = "10") Integer size) {


   return userService.findPage(page, size);


}

20. @ExceptionHandler:全局異常處理

統一處理控制器中的異常,不用在每個方法中寫 try-catch 了。

@RestControllerAdvice // 全局異常處理類

public class GlobalExceptionHandler {


   // 處理空指針異常

   @ExceptionHandler(NullPointerException.class)


   public Result handleNullPointerException(NullPointerException e) {


       return Result.error("空指針異常:" + e.getMessage());


   }


   // 處理所有異常(兜底)

   @ExceptionHandler(Exception.class)


   public Result handleException(Exception e) {


       return Result.error("系統異常,請聯系管理員");


   }


}

效果:控制器拋出異常后,會自動被這里的方法捕獲并處理,返回統一的錯誤格式。

為什么這些注解能讓你少加班?

Spring Boot 的注解看似繁多,但核心都是為了簡化開發。掌握這些高頻注解,你能:

  • 告別 XML 配置,用注解快速實現功能
  • 精準處理 HTTP 請求,輕松獲取參數和返回數據
  • 合理管理組件依賴,避免注入失敗的坑
  • 用事務和異常處理保證系統穩定性

這些注解就像是 Spring Boot 的 “快捷鍵”,熟練運用它們,別人寫一天的代碼,你半天就能搞定!

責任編輯:趙寧寧 來源: 編程江湖
相關推薦

2019-04-02 15:20:18

JavaSpring注解

2024-11-07 16:39:42

SpringBoo常用注解Bean

2023-06-02 16:24:46

SpringBootSSM

2020-09-04 13:30:43

Java自定義代碼

2017-08-02 14:44:06

Spring Boot開發注解

2020-11-02 07:00:29

Spring Boo注解自動化

2025-01-14 17:00:00

SpringBoot開發代碼

2009-06-15 17:48:32

Spring注解注入屬性

2021-04-13 20:24:57

Spring Boot注解spring

2024-10-14 17:18:27

2025-09-01 01:25:00

SpringMVC注解

2020-09-24 10:00:50

SpringBoo

2020-03-31 15:03:56

Spring Boot代碼Java

2023-04-17 23:49:09

開發代碼Java

2023-03-27 08:12:40

源碼場景案例

2023-03-06 11:13:20

Spring注解加載

2023-03-13 08:12:25

@DependsOn源碼場景

2021-08-13 12:31:26

Redis代碼Java

2025-08-04 02:25:00

2024-07-01 07:59:07

點贊
收藏

51CTO技術棧公眾號

免费人成在线观看播放视频| 在线电影院国产精品| 欧美一区二区三区在线电影| 一本色道久久88亚洲精品综合| 亚洲伊人精品酒店| 欧美中文字幕一区二区三区亚洲| aa免费在线观看| 日日摸夜夜添夜夜添亚洲女人| 国产suv精品一区二区三区88区| 91精品论坛| 欧美综合久久久| av黄色免费在线| 91一区二区三区在线播放| 亚州欧美一区三区三区在线| 欧洲杯什么时候开赛| 久久精品中文字幕| 日韩av影片| 精品毛片乱码1区2区3区| 天海翼女教师无删减版电影| 91亚洲精品久久久蜜桃网站| 欧美日韩亚洲国产成人| 久久久精品网| 国产精品免费一区二区三区| 欧美男gay| 欧美亚洲一区在线| 超碰地址久久| 久久国产精品久久精品| 在线观看的黄色| 亚洲福利精品在线| 精品麻豆一区二区三区| 欧美视频完全免费看| 国产美女被遭强高潮免费网站| 久久久国产午夜精品| 妺妺窝人体色www在线小说| 国产大片一区二区| 国产精品videossex国产高清 | 亚洲狠狠婷婷综合久久久| 亚洲一级淫片| 91视频免费进入| 香港欧美日韩三级黄色一级电影网站| 欧美理论电影在线播放| 久久伦理中文字幕| 色中色综合影院手机版在线观看 | 成人欧美一区二区三区黑人孕妇 | 成人在线免费观看视视频| 136国产福利精品导航网址应用| 精品国产一区二区三区久久狼5月 精品国产一区二区三区久久久狼 精品国产一区二区三区久久久 | 精品国产午夜| 国产精品高精视频免费| 曰本一区二区三区视频| 日av在线播放中文不卡| 成人在线免费观看视频| 91精品网站| 中文亚洲字幕| 在线观看日韩片| 成人免费的视频| 中文字幕第88页| 舔着乳尖日韩一区| 色开心亚洲综合| 日韩电影免费观看在线观看| 国产精品videossex撒尿| 欧美精品www在线观看| 欧美猛男同性videos| 亚洲一区久久久| 久久综合狠狠| 国产亚洲综合视频| 亚洲成a人片在线不卡一二三区 | 日本精品视频在线| 国产一区二区区别| 国内精品久久国产| 美女尤物久久精品| 鲁一鲁一鲁一鲁一色| 亚洲欧美日韩电影| 日本视频在线免费观看| 色琪琪综合男人的天堂aⅴ视频| 秋霞在线一区| 久久国产一区| caoporen国产精品视频| 天堂影视av| 日韩黄色高清视频| 亚洲欧美成人vr| 亚洲午夜精品久久久中文影院av| 99精品一区二区三区| 天堂在线中文| 一本色道久久88精品综合| 国产精品美女久久久久久不卡| 欧洲亚洲一区二区| 亚洲欧美综合网| 中文在线字幕免费观看| 久久99久久亚洲国产| 日韩网站在线| 91制片厂毛片| 精品日韩av一区二区| 中文在线综合| 日韩激情视频| 亚洲一级在线观看| 四虎4545www精品视频| 亚洲综合av影视| zzijzzij亚洲日本少妇熟睡| 男女网站在线观看| 久久久视频免费观看| 久久美女性网| 男女视频网站免费观看| 日韩精品免费看| 国产精品久久久乱弄 | 欧美国产成人在线| 日韩三级影院| 午夜精品久久久久久久久久久久| 99成人在线| 97秋霞电影网| 亚洲欧美中文在线视频| 女主播福利一区| 国产精品视频黄色| 亚洲精品在线视频| 99国产一区| 污网站在线播放| 国产最新精品视频| 成人做爰69片免费看网站| 自拍亚洲图区| 亚洲一区二区三区成人在线视频精品| 成人在线综合网| 色黄网站在线观看| 18成人免费观看网站下载| 国产精品情趣视频| 久久亚洲精品人成综合网| 日本不卡一区二区三区在线观看| 亚洲成人7777| 你懂的视频欧美| 免费看国产黄色片| 中文字幕亚洲在线| 久久超碰97中文字幕| 久久综合网导航| 国产精品一区二区在线观看| 亚洲国产精品久久不卡毛片| 黄色成人美女网站| 亚洲xxxx2d动漫1| 日韩视频免费在线观看| 紧缚捆绑精品一区二区| 国产传媒在线播放| 精品无人区一区二区三区竹菊| 欧美日韩国产色视频| av一区二区在线播放| 男人插曲女人视频免费| 欧美成人性生活| 91亚洲国产成人精品一区二区三| 亚洲wwww| 国产精品日韩三级| 亚洲人成人99网站| 狠狠色综合播放一区二区| 俄罗斯一级**毛片在线播放| 日本视频精品一区| 欧美本精品男人aⅴ天堂| 日韩一级在线| 伊人电影在线观看| 亚洲国产精品久久久久久女王| 欧美xfplay| 国产一区二区三区精品欧美日韩一区二区三区 | av不卡一区二区三区| 男人久久天堂| 国产精品igao激情视频| 亚洲免费av片| 成人免费视频免费观看| 亚洲成人1区| 牛夜精品久久久久久久| 日韩av成人在线观看| 欧美日韩国产精品一区二区不卡中文| 亚洲成人精选| 久久亚洲天堂| 精品国产三级a∨在线| 中文字幕免费精品一区高清| 不卡的av中国片| 狠狠一区二区三区| 中文字幕av高清在线观看| 亚洲自拍中文字幕| 日韩欧美亚洲国产另类| 国产成人av福利| 超碰精品在线观看| 欧美精品一区二区三区涩爱蜜| 91免费看蜜桃| 亚洲精品99999| 91免费观看视频在线| 亚洲老女人视频免费| 国产免费a∨片在线观看不卡| 欧美精品二区三区四区免费看视频 | 夜夜嗨av一区二区三区网页| 日韩欧美网站| 免费的黄网站在线观看| 桥本有菜av在线| 午夜精品一区二区三区在线视 | theporn国产在线精品| 国产一级黄色电影| 国产超碰91| 亚洲欧美日韩国产精品| 国产精品色在线观看| 欧美日韩 国产精品| 在线天堂新版最新版在线8| 97在线资源在| 精东粉嫩av免费一区二区三区| av一区在线播放| 亚洲美女主播视频免费观看|