🚀 Spring Boot 常见注解全解指南
🔖 一、核心类注解(启动类)
注解 | 作用 | 常见应用 |
---|
@SpringBootApplication | 综合注解,包含 @SpringBootConfiguration 、@EnableAutoConfiguration 和 @ComponentScan | 标记主启动类,自动扫描组件和配置 |
@SpringBootApplication
public class MyApp {public static void main(String[] args) {SpringApplication.run(MyApp.class, args);}
}
🧠 面试延伸:为什么推荐使用 @SpringBootApplication 而不是单独写三个注解?
👉 统一、简洁,且 SpringBoot 会自动做配置加载与组件扫描,简化开发。
🧱 二、组件类注解(用于创建 Bean)
注解 | 作用 | 使用场景 |
---|
@Component | 表示该类是一个组件,交给 Spring 容器管理 | 工具类、通用组件 |
@Service | 表示业务逻辑层组件 | Service 层 |
@Repository | 表示数据访问层组件(DAO) | MyBatis / JPA 中的 Mapper |
@Controller | 表示控制器组件(返回视图) | 用于 Web 页面跳转 |
@RestController | 等同于 @Controller + @ResponseBody ,返回 JSON 数据 | RESTful 接口开发 |
🔗 三、依赖注入注解(IOC / DI)
注解 | 作用 | 注意事项 |
---|
@Autowired | 按类型自动注入 Bean | 推荐用在构造器注入上 |
@Qualifier("beanName") | 指定注入 Bean 名称,解决多个实现类冲突 | 与 @Autowired 联用 |
@Resource | JSR-250 注解,按名称注入(支持回退按类型) | 与 @Autowired 类似但更明确 |
@Autowired
private UserService userService;
🌐 四、Web 与请求相关注解(Spring MVC)
注解 | 作用 | 使用场景 |
---|
@RequestMapping | 映射请求路径(支持 GET/POST 等) | 通用接口路径映射 |
@GetMapping / @PostMapping | 映射 GET / POST 请求 | 常用于 REST API |
@PathVariable | 获取 URL 中的路径参数 | /user/{id} |
@RequestParam | 获取请求参数 | /search?key=value |
@RequestBody | 将请求体 JSON 映射为 Java 对象 | 接收 POST 请求的 JSON 数据 |
@ResponseBody | 将方法返回值直接写入响应体(通常返回 JSON) | API 接口开发 |
@RestController
@RequestMapping("/user")
public class UserController {@GetMapping("/{id}")public User getUser(@PathVariable Long id) {return userService.getById(id);}
}
📦 五、配置与属性注解
注解 | 作用 | 常见用途 |
---|
@Value("${key}") | 注入配置文件中的单个属性 | application.yml 中读取配置 |
@Configuration | 声明配置类,等同于 XML 配置 | Java 配置方式 |
@ConfigurationProperties | 将配置文件中一组属性映射到一个 Bean 上 | 推荐用于绑定复杂配置结构 |
@EnableConfigurationProperties | 启用 @ConfigurationProperties 注解的类 | 通常配合使用 |
🔐 六、其他常用注解
注解 | 功能 | 场景 |
---|
@EnableAutoConfiguration | 启用 Spring Boot 自动配置功能(包含在 @SpringBootApplication 中) | 框架自动装配 |
@ConditionalOnMissingBean | 当容器中不存在某个 Bean 时再创建 | 自定义默认配置 |
@Bean | 手动注册一个 Bean 到容器中 | 第三方类库注册 |
@Profile("dev") | 只在特定 profile 环境下加载该类 | 多环境配置 |
📌 图示:Spring Boot 注解分类结构(Mermaid)

✅ 总结:面试高频问法
问题 | 建议思路 |
---|
@SpringBootApplication 包含了哪些注解? | 说明其等同于三个注解:@ComponentScan , @EnableAutoConfiguration , @SpringBootConfiguration |
如何使用 @ConfigurationProperties ? | 创建类绑定配置,使用 @EnableConfigurationProperties 激活 |
@RestController 和 @Controller 的区别? | 前者自动加了 @ResponseBody ,常用于 REST 接口返回 JSON |
注入 Bean 时 @Autowired 和 @Resource 有啥区别? | 前者按类型注入,后者默认按名称,建议构造方法注入提升可测试性 |