SpringBoot 常用注解通俗解釋
一、啟動類相關
1. @SpringBootApplication ?
? ?? 作用:這是SpringBoot項目的"總開關",放在主類上
? ?? 通俗理解:相當于對電腦說:"開機!我要用SpringBoot了!"
? ?? 包含三個小功能:
? ? ?? `@Configuration`:告訴Spring這里有些配置
? ? ?? `@EnableAutoConfiguration`:讓SpringBoot自動配置
? ? ?? `@ComponentScan`:讓Spring去掃描當前包下的組件
二、控制器相關(Controller)
2. @RestController ?
? ?? 作用:標記這是一個控制器,返回JSON數據
? ?? 通俗理解:掛個牌子"這里是接待處",來的請求都轉成JSON格式回復
? ?? 對比:`@Controller`是返回網頁,`@RestController`是返回數據
3. @RequestMapping ?
? ?? 作用:定義請求路徑
? ?? 通俗理解:給辦公室貼門牌號,比如`/user`就是"用戶辦公室"
? ?? 示例:`@RequestMapping("/api/users")` → 訪問路徑是`http://地址/api/users`
4. @GetMapping / @PostMapping ?
? ?? 作用:指定GET/POST等請求方式
? ?? 通俗理解:
? ? ?? `@GetMapping`:只接受"敲門"(瀏覽器直接訪問)
? ? ?? `@PostMapping`:只接受"遞紙條"(表單提交)
5. @PathVariable ?
? ?? 作用:獲取URL中的變量
? ?? 通俗理解:從網址中摳出數字/文字
? ?? 示例: ?
? ? ?```java
? ? ?@GetMapping("/users/{id}") ?// 訪問/users/123
? ? ?public String getUser(@PathVariable Long id) {
? ? ? ? ?return "找到用戶"+id; ?// id=123
? ? ?}
? ? ?```
6. @RequestParam ?
? ?? 作用:獲取請求參數
? ?? 通俗理解:從網址問號后面拿參數
? ?? 示例: ?
? ? ?```java
? ? ?// 訪問 /search?keyword=手機
? ? ?@GetMapping("/search")
? ? ?public String search(@RequestParam String keyword) {
? ? ? ? ?return "正在搜索:" + keyword; ?// keyword="手機"
? ? ?}
? ? ?```
7. @RequestBody ?
? ?? 作用:獲取請求體中的JSON數據
? ?? 通俗理解:收快遞(接收前端發來的JSON包裹)
? ?? 示例: ?
? ? ?```java
? ? ?@PostMapping("/users")
? ? ?public User addUser(@RequestBody User user) {
? ? ? ? ?// 前端發來JSON自動變成User對象
? ? ? ? ?return userService.save(user);
? ? ?}
? ? ?```
三、服務層相關(Service)
8. @Service ?
? ?? 作用:標記這是一個服務類
? ?? 通俗理解:掛個牌子"這里是業務處理中心"
? ?? 特點:通常包含業務邏輯,比如計算、數據處理等
9. @Transactional ?
? ?? 作用:聲明事務(要么全部成功,要么全部失敗)
? ?? 通俗理解:打包操作,要么全部完成,要么全部取消
? ?? 示例: ?
? ? ?```java
? ? ?@Transactional
? ? ?public void transferMoney(Long from, Long to, BigDecimal amount) {
? ? ? ? ?// 扣錢和加錢要么都成功,要么都失敗
? ? ? ? ?accountService.debit(from, amount);
? ? ? ? ?accountService.credit(to, amount);
? ? ?}
? ? ?```
四、數據訪問層(Repository)
10. @Repository ?
? ? ? 作用:標記這是數據訪問組件
? ? ? 通俗理解:掛個牌子"這里是數據庫操作員"
? ? ? 注意:用JPA時通常繼承`JpaRepository`,可以不加這個注解
五、依賴注入
11. @Autowired ?
? ? ? 作用:自動裝配依賴對象
? ? ? 通俗理解:需要什么工具,喊一聲"給我拿個XXX",Spring就會遞給你
? ? ? 示例: ?
? ? ? ```java
? ? ? @Service
? ? ? public class UserService {
? ? ? ? ? @Autowired ?// Spring自動把UserRepository實例放進來
? ? ? ? ? private UserRepository userRepo;
? ? ? }
? ? ? ```
六、實體類相關(Entity)
12. @Entity ?
? ? ? 作用:標記這是數據庫表對應的類
? ? ? 通俗理解:給Java類貼標簽"我是數據庫里的一張表"
13. @Id ?
? ? ? 作用:標記這是主鍵字段
? ? ? 通俗理解:給字段貼標簽"這是我的身份證號"
14. @Column ?
? ? ? 作用:定義字段屬性
? ? ? 通俗理解:給字段加備注說明
? ? ? 示例: ?
? ? ? ```java
? ? ? @Column(name = "user_name", nullable = false, length = 50)
? ? ? private String username;
? ? ? ```
七、配置相關
15. @Configuration ?
? ? ? 作用:聲明這是一個配置類
? ? ? 通俗理解:掛個牌子"這里是工具配置中心"
16. @Bean ?
? ? ? 作用:聲明一個方法返回的對象交給Spring管理
? ? ? 通俗理解:在配置中心里放個新工具,大家都可以用
? ? ? 示例: ?
? ? ? ```java
? ? ? @Configuration
? ? ? public class AppConfig {
? ? ? ? ? @Bean
? ? ? ? ? public PasswordEncoder passwordEncoder() {
? ? ? ? ? ? ? return new BCryptPasswordEncoder();
? ? ? ? ? }
? ? ? }
? ? ? ```
八、其他常用
17. @Component ?
? ? ? 作用:通用的組件注解
? ? ? 通俗理解:萬用標簽,可以貼在任何需要Spring管理的類上
18. @Value ?
? ? ? 作用:注入配置文件中的值
? ? ? 通俗理解:從application.properties里讀取設置
? ? ? 示例: ?
? ? ? ```java
? ? ? @Value("${app.page.size}") ?// 對應配置文件中的app.page.size=10
? ? ? private int pageSize;
? ? ? ```
快速記憶口訣
? 開機:`@SpringBootApplication`
? 接待:`@RestController` + `@RequestMapping`
? 收參數:`@PathVariable`、`@RequestParam`、`@RequestBody`
? 業務:`@Service` + `@Transactional`
? 數據庫:`@Entity` + `@Id` + `@Column`
? 要工具:`@Autowired`
? 配東西:`@Configuration` + `@Bean`