常见的 Spring Boot 注解汇总

🚀 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 有啥区别? 前者按类型注入,后者默认按名称,建议构造方法注入提升可测试性
相关推荐
王嘉俊9252 分钟前
设计模式--享元模式:优化内存使用的轻量级设计
java·设计模式·享元模式
2301_803554521 小时前
C++联合体(Union)详解:与结构体的区别、联系与深度解析
java·c++·算法
EnCi Zheng1 小时前
SpringBoot 配置文件完全指南-从入门到精通
java·spring boot·后端
烙印6011 小时前
Spring容器的心脏:深度解析refresh()方法(上)
java·后端·spring
为什么我不是源代码1 小时前
JPA读取数据库离谱问题-No property ‘selectClassByName‘ found-Not a managed type
java·sql
Lisonseekpan1 小时前
Guava Cache 高性能本地缓存库详解与使用案例
java·spring boot·后端·缓存·guava
我真的是大笨蛋2 小时前
Redis的String详解
java·数据库·spring boot·redis·spring·缓存
心态特好2 小时前
Jwt非对称加密的应用场景
java
七七七七072 小时前
【Linux 系统】打开文件和文件系统
linux·运维·spring
敢敢J的憨憨L2 小时前
GPTL(General Purpose Timing Library)使用教程
java·服务器·前端·c++·轻量级计时工具库