一文掌握 Spring Boot 中最常用的 20 個注解,涵蓋開發、配置、Web、數據庫、測試等場景,配合示例講解,一站式掌握!
📌 一、核心配置類注解
1. @SpringBootApplication
- 作用:標記為 Spring Boot 應用的入口類,包含了
@Configuration
、@EnableAutoConfiguration
和@ComponentScan
。 - 使用場景:主啟動類上唯一標注一次。
@SpringBootApplication
public class MyApp {public static void main(String[] args) {SpringApplication.run(MyApp.class, args);}
}
🧩 二、組件注冊相關注解
2. @Component
- 作用:聲明一個組件,交由 Spring 容器管理。
- 使用場景:普通工具類、服務類等。
@Component
public class MyUtil {// ...
}
3. @Service
- 作用:聲明業務邏輯層組件。
- 區別:語義上表示“服務類”,本質還是
@Component
。
@Service
public class UserService {// ...
}
4. @Repository
- 作用:聲明數據訪問層組件,并支持自動異常轉換。
- 使用場景:操作數據庫的 DAO 類。
@Repository
public class UserDao {// ...
}
5. @Controller
- 作用:聲明控制器類,處理前端請求。
- 配套注解:配合
@RequestMapping
、@GetMapping
等使用。
@Controller
public class HomeController {@GetMapping("/")public String home() {return "index";}
}
6. @RestController
- 作用:相當于
@Controller + @ResponseBody
,返回 JSON 數據。 - 使用場景:用于 RESTful API。
@RestController
@RequestMapping("/api")
public class UserController {@GetMapping("/users")public List<User> getUsers() {return userService.getAll();}
}
🌐 三、請求映射注解
7. @RequestMapping
- 作用:用于類或方法上,通用映射。
- 支持:GET、POST、PUT、DELETE等方式。
@RequestMapping(value = "/user", method = RequestMethod.GET)
public User getUser() {return user;
}
8. @GetMapping
/ @PostMapping
/ @PutMapping
/ @DeleteMapping
- 作用:簡化的 HTTP 方法映射注解。
- 建議:優先使用這些更語義化的注解。
@GetMapping("/user/{id}")
public User findById(@PathVariable Long id) {return userService.find(id);
}
💾 四、依賴注入注解
9. @Autowired
- 作用:自動注入 Spring 管理的 Bean。
- 推薦:構造器注入代替字段注入。
@Autowired
private UserService userService;
10. @Qualifier
- 作用:解決多個 Bean 注入時的沖突。
- 配合:
@Autowired
使用。
@Autowired
@Qualifier("myImpl")
private MyService service;
🏷? 五、參數綁定注解
11. @RequestParam
- 作用:綁定 URL 查詢參數。
- 默認:支持設置是否必須。
@GetMapping("/search")
public List<User> search(@RequestParam String keyword) {return userService.search(keyword);
}
12. @PathVariable
- 作用:綁定路徑中的變量。
@GetMapping("/user/{id}")
public User getUser(@PathVariable Long id) {return userService.getById(id);
}
13. @RequestBody
- 作用:接收 JSON 數據,反序列化為對象。
@PostMapping("/user")
public void saveUser(@RequestBody User user) {userService.save(user);
}
🔒 六、配置與環境注解
14. @Value
- 作用:讀取
application.yml
或.properties
中的配置項。
@Value("${server.port}")
private int port;
15. @Configuration
- 作用:標記為配置類,等價于 XML 配置。
@Configuration
public class AppConfig {@Beanpublic MyBean myBean() {return new MyBean();}
}
16. @Bean
- 作用:向 Spring 容器注冊一個 Bean。
- 配合:
@Configuration
使用。
@Bean
public RestTemplate restTemplate() {return new RestTemplate();
}
🧪 七、測試相關注解
17. @SpringBootTest
- 作用:用于 Spring Boot 的集成測試。
@SpringBootTest
public class UserServiceTest {@Autowiredprivate UserService userService;
}
18. @MockBean
- 作用:用于測試中替換某個 Bean,通常用于 Mock。
@MockBean
private UserRepository userRepository;
? 八、數據校驗注解(JSR-303)
19. @Valid
/ @Validated
- 作用:用于校驗請求參數是否合法。
- 配套注解:配合
@NotNull
、@Size
等使用。
@PostMapping("/register")
public void register(@Valid @RequestBody User user) {// ...
}
🔄 九、事務管理注解
20. @Transactional
- 作用:開啟事務。
- 常用屬性:
rollbackFor
,readOnly
,propagation
。
@Transactional(rollbackFor = Exception.class)
public void saveData() {// ...
}
? 總結表格:注解速查表
注解 | 類型 | 場景 | 特點 |
---|---|---|---|
@SpringBootApplication | 啟動注解 | 啟動類 | 三合一復合注解 |
@Component | 通用組件 | 工具類等 | 可被掃描 |
@Service | 業務組件 | Service 層 | 本質是 @Component |
@Repository | DAO組件 | 數據訪問 | 自動異常封裝 |
@Controller | Web 控制器 | 頁面跳轉 | 搭配模板引擎 |
@RestController | API 控制器 | 返回 JSON | = @Controller + @ResponseBody |
@Autowired | 注入 | 自動注入 | 構造/字段均可 |
@RequestMapping | 請求映射 | 多 HTTP 方法 | 可用于類/方法 |
@GetMapping 等 | 請求映射 | 精準 HTTP 方法 | 推薦使用 |
@Value | 配置讀取 | yml、prop 值注入 | 字符串解析 |
@Transactional | 事務管理 | Service 層 | 原子性保障 |
@Bean | 手動注冊 | 第三方類 | 自定義 Bean |
@Valid / @Validated | 參數校驗 | 表單、實體 | 搭配校驗注解 |
@SpringBootTest | 測試注解 | 單元/集成測試 | 提供完整容器 |
@MockBean | 測試 Mock | 替換 Bean | 使用 Mockito |
📘 建議收藏:這些注解是你開發 Spring Boot 項目的“基本功”,越熟練越高效!
如果你覺得有幫助,別忘了點贊、收藏和分享~