🚀 Spring Boot 常见注解全解指南
🔖 一、核心类注解(启动类)
注解
作用
常见应用
@SpringBootApplication
综合注解,包含 @SpringBootConfiguration
、@EnableAutoConfiguration
和 @ComponentScan
标记主启动类,自动扫描组件和配置
java
复制代码
@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
类似但更明确
java
复制代码
@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 接口开发
java
复制代码
@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
有啥区别?
前者按类型注入,后者默认按名称,建议构造方法注入提升可测试性