下面给你一份Spring Boot 常用注解全景清单 ,按使用场景分类 ,非常适合日常开发 + 面试复习。
一、启动 & 核心注解(必须掌握)
✅ @SpringBootApplication
java
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
等价于:
java
@Configuration
@EnableAutoConfiguration
@ComponentScan
| 注解 | 作用 |
|---|---|
| @Configuration | 标识配置类 |
| @EnableAutoConfiguration | 开启自动配置 |
| @ComponentScan | 扫描 Bean |
📌 Spring Boot 应用的入口注解
二、Bean 定义 & 注入
1️⃣ 定义 Bean
| 注解 | 说明 |
|---|---|
| @Component | 通用组件 |
| @Service | 业务层 |
| @Repository | DAO 层(支持异常转换) |
| @Controller | MVC 控制器 |
| @RestController | REST 接口(= @Controller + @ResponseBody) |
java
@RestController
@RequestMapping("/user")
public class UserController {}
2️⃣ Bean 注入(DI)
✅ @Autowired(Spring 原生)
java
@Autowired
private UserService userService;
✅ @Qualifier(解决多个实现)
java
@Autowired
@Qualifier("userServiceImpl")
private UserService userService;
✅ @Resource(JDK 自带,推荐)
java
@Resource
private UserService userService;
📌 区别:
| 注解 | 来源 | 默认按 |
|---|---|---|
| @Autowired | Spring | 类型 |
| @Resource | JDK | 名称 |
三、配置相关注解(非常高频)
1️⃣ 配置文件绑定
@Value
java
@Value("${server.port}")
private int port;
@ConfigurationProperties(强烈推荐)
java
@Data
@Component
@ConfigurationProperties(prefix = "aliyun.oss")
public class OssConfig {
private String endpoint;
private String accessKey;
}
2️⃣ 引入配置
| 注解 | 作用 |
|---|---|
| @PropertySource | 加载自定义 properties |
| @ImportResource | 引入 XML 配置 |
| @Import | 导入配置类 |
四、Web / MVC 注解
1️⃣ 请求映射
| 注解 | 说明 |
|---|---|
| @RequestMapping | 通用 |
| @GetMapping | GET |
| @PostMapping | POST |
| @PutMapping | PUT |
| @DeleteMapping | DELETE |
java
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {}
2️⃣ 参数绑定
| 注解 | 作用 |
|---|---|
| @PathVariable | URL 参数 |
| @RequestParam | 请求参数 |
| @RequestBody | JSON 请求体 |
| @RequestHeader | Header |
| @CookieValue | Cookie |
3️⃣ 响应处理
| 注解 | 说明 |
|---|---|
| @ResponseBody | 返回 JSON |
| @ResponseStatus | 指定 HTTP 状态码 |
| @ExceptionHandler | 局部异常处理 |
| @ControllerAdvice | 全局异常处理 |
五、数据库 & 事务
1️⃣ JPA / MyBatis 常用
| 注解 | 说明 |
|---|---|
| @Entity | JPA 实体 |
| @Table | 表名 |
| @Id | 主键 |
| @GeneratedValue | 主键生成 |
| @Column | 字段 |
2️⃣ 事务(非常重要)
@Transactional
java
@Transactional(rollbackFor = Exception.class)
public void saveUser() {}
📌 常见考点:
- 默认只对 RuntimeException 回滚
- 同类方法调用事务失效
- 需 public 方法
六、AOP 相关注解
| 注解 | 作用 |
|---|---|
| @Aspect | 切面 |
| @Pointcut | 切点 |
| @Before | 前置通知 |
| @After | 后置通知 |
| @Around | 环绕通知 |
| @AfterReturning | 返回后 |
| @AfterThrowing | 异常后 |
java
@Aspect
@Component
public class LogAspect {}
七、异步 / 定时 / 缓存
1️⃣ 异步
java
@EnableAsync
@Async
public void sendEmail() {}
2️⃣ 定时任务
java
@EnableScheduling
@Scheduled(cron = "0 0 * * * ?")
public void task() {}
3️⃣ 缓存(高频)
| 注解 | 作用 |
|---|---|
| @EnableCaching | 启用缓存 |
| @Cacheable | 查询缓存 |
| @CachePut | 更新缓存 |
| @CacheEvict | 删除缓存 |
八、条件装配(Spring Boot 精髓)
| 注解 | 说明 |
|---|---|
| @ConditionalOnClass | 类存在才生效 |
| @ConditionalOnMissingBean | Bean 不存在才生效 |
| @ConditionalOnBean | Bean 存在才生效 |
| @ConditionalOnProperty | 配置存在 |
📌 自动配置的核心
九、测试相关
| 注解 | 作用 |
|---|---|
| @SpringBootTest | 启动容器测试 |
| @WebMvcTest | MVC 测试 |
| @DataJpaTest | JPA 测试 |
| @MockBean | Mock Bean |
十、高频总结(速记)
✅ @SpringBootApplication = 三大注解
✅ @RestController = @Controller + @ResponseBody
✅ @Autowired 按类型,@Resource 按名称
✅ @Transactional 只对 public 方法有效
✅ @ConfigurationProperties 优于 @Value
✅ 条件注解是 Spring Boot 自动配置灵魂