[特殊字符] Spring Boot 常用注解全解析:20 个高频注解 + 使用场景实例
一文掌握 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 项目的“基本功”,越熟练越高效!
如果你觉得有帮助,别忘了点赞、收藏和分享~