Spring Boot 注解大全(详细版)
一、核心注解
1. @SpringBootApplication
- **作用**:Spring Boot核心注解,用于启动类
- **包含**:组合了@Configuration、@EnableAutoConfiguration和@ComponentScan
- **示例**:
```java
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
```
2. @Configuration
- **作用**:标识该类为配置类,替代XML配置文件
- **特点**:内部包含@Bean注解的方法
3. @EnableAutoConfiguration
- **作用**:启用Spring Boot的自动配置机制
- **原理**:根据classpath中的jar包自动配置Spring应用
4. @ComponentScan
- **作用**:自动扫描指定包及其子包下的组件
- **参数**:
- `basePackages`:指定扫描的基础包
- `excludeFilters`:排除特定组件
二、Web相关注解
1. @RestController
- **作用**:组合注解,相当于@Controller + @ResponseBody
- **用途**:用于RESTful Web服务
2. @RequestMapping
- **作用**:映射Web请求到处理方法
- **参数**:
- `value/path`:请求路径
- `method`:HTTP方法(GET/POST等)
- `produces/consumes`:指定返回/接收的媒体类型
- **衍生注解**:
- @GetMapping
- @PostMapping
- @PutMapping
- @DeleteMapping
- @PatchMapping
3. @RequestParam
- **作用**:绑定请求参数到方法参数
- **参数**:
- `value/name`:参数名
- `required`:是否必需(默认true)
- `defaultValue`:默认值
4. @PathVariable
- **作用**:绑定URL模板变量到方法参数
- **示例**:
```java
@GetMapping("/users/{id}")
public User getUser(@PathVariable Long id) {
// ...
}
```
5. @RequestBody
- **作用**:将HTTP请求体绑定到方法参数
- **用途**:通常用于接收JSON/XML数据
6. @ResponseBody
- **作用**:将方法返回值直接写入HTTP响应体
7. @RestControllerAdvice
- **作用**:组合@ControllerAdvice和@ResponseBody,用于全局异常处理
8. @ExceptionHandler
- **作用**:处理特定异常
- **示例**:
```java
@ExceptionHandler(ResourceNotFoundException.class)
public ResponseEntity> handleResourceNotFound(ResourceNotFoundException ex) {
// ...
}
```
## 三、数据访问注解
1. @Repository
- **作用**:标识数据访问组件(DAO)
2. @Entity
- **作用**:标识JPA实体类
3. @Table
- **作用**:指定实体对应的数据库表
- **参数**:
- `name`:表名
- `schema`:模式名
4. @Id
- **作用**:标识主键字段
5. @GeneratedValue
- **作用**:指定主键生成策略
- **策略**:
- `GenerationType.IDENTITY`:自增
- `GenerationType.SEQUENCE`:序列
- `GenerationType.TABLE`:表生成
- `GenerationType.AUTO`:自动选择
6. @Column
- **作用**:映射字段到列
- **参数**:
- `name`:列名
- `nullable`:是否可为空
- `length`:长度(String类型)
- `unique`:是否唯一
7. @Transactional
- **作用**:声明事务
- **参数**:
- `propagation`:传播行为(REQUIRED, SUPPORTS等)
- `isolation`:隔离级别
- `timeout`:超时时间
- `readOnly`:是否只读
四、依赖注入注解
1. @Autowired
- **作用**:自动装配依赖
- **位置**:可用于字段、构造方法、setter方法
- **变体**:
- `@Autowired(required=false)`:非必须依赖
2. @Qualifier
- **作用**:当有多个同类型Bean时指定具体Bean
- **示例**:
```java
@Autowired
@Qualifier("mainDataSource")
private DataSource dataSource;
```
3. @Resource
- **作用**:按名称注入(JSR-250标准)
- **与@Autowired区别**:默认按名称而非类型
4. @Value
- **作用**:注入属性值
- **来源**:properties/yml文件、环境变量等
- **示例**:
```java
@Value("${app.name}")
private String appName;
```
## 五、配置相关注解
1. @PropertySource
- **作用**:加载指定的属性文件
- **示例**:
```java
@PropertySource("classpath:custom.properties")
```
2. @ConfigurationProperties
- **作用**:批量绑定属性到对象
- **前缀**:指定属性前缀
- **示例**:
```java
@ConfigurationProperties(prefix = "app")
public class AppProperties {
private String name;
private String version;
// getters/setters
}
```
3. @Profile
- **作用**:指定组件在特定环境下激活
- **示例**:
```java
@Profile("dev")
@Service
public class DevService { ... }
```
## 六、测试相关注解
1. @SpringBootTest
- **作用**:Spring Boot集成测试
- **参数**:
- `webEnvironment`:指定Web环境(MOCK, RANDOM_PORT等)
2. @DataJpaTest
- **作用**:JPA仓库测试,只初始化数据相关组件
3. @WebMvcTest
- **作用**:MVC控制器测试,只初始化Web层
4. @MockBean
- **作用**:向应用上下文添加Mock对象
5. @Test
- **作用**:标识测试方法(JUnit)
## 七、定时任务注解
1. @EnableScheduling
- **作用**:启用定时任务支持
2. @Scheduled
- **作用**:声明定时任务
- **参数**:
- `fixedRate`:固定速率执行
- `fixedDelay`:固定延迟执行
- `cron`:Cron表达式
- **示例**:
```java
@Scheduled(cron = "0 0 12 * * ?")
public void dailyTask() { ... }
```
## 八、缓存相关注解
1. @EnableCaching
- **作用**:启用缓存支持
2. @Cacheable
- **作用**:缓存方法结果
- **参数**:
- `value/cacheNames`:缓存名称
- `key`:缓存键
- `condition`:缓存条件
3. @CacheEvict
- **作用**:清除缓存
- **参数**:
- `allEntries`:是否清除所有条目
九、安全相关注解
1. @EnableWebSecurity
- **作用**:启用Web安全配置
2. @PreAuthorize
- **作用**:方法执行前进行权限检查
- **示例**:
```java
@PreAuthorize("hasRole('ADMIN')")
public void adminOperation() { ... }
```
3. @Secured
- **作用**:基于角色的方法安全
- **示例**:
```java
@Secured("ROLE_USER")
public void userOperation() { ... }
```
## 十、消息相关注解
1. @EnableRabbit
- **作用**:启用RabbitMQ支持
2. @RabbitListener
- **作用**:监听RabbitMQ队列
- **示例**:
```java
@RabbitListener(queues = "myQueue")
public void processMessage(String content) { ... }
```
3. @JmsListener
- **作用**:监听JMS队列/主题
- **示例**:
```java
@JmsListener(destination = "myQueue")
public void processJmsMessage(String content) { ... }
```
十一、Actuator相关注解
1. @Endpoint
- **作用**:定义自定义Actuator端点
2. @ReadOperation
- **作用**:端点读操作(HTTP GET)
3. @WriteOperation
- **作用**:端点写操作(HTTP POST)
十二、AOP相关注解
1. @Aspect
- **作用**:声明切面类
2. @Before
- **作用**:前置通知
3. @After
- **作用**:后置通知
4. @Around
- **作用**:环绕通知
5. @Pointcut
- **作用**:定义切点表达式
## 十三、验证相关注解
1. @Valid
- **作用**:触发参数验证
2. @NotNull
- **作用**:非空验证
3. @Size
- **作用**:大小验证(String/Collection)
4. @Pattern
- **作用**:正则验证
## 十四、其他重要注解
1. @Conditional
- **作用**:条件化Bean创建
- **衍生**:
- @ConditionalOnClass
- @ConditionalOnMissingBean
- @ConditionalOnProperty
2. @Lazy
- **作用**:延迟初始化Bean
3. @Primary
- **作用**:指定优先注入的Bean
4. @Async
- **作用**:异步执行方法
5. @EnableAsync
- **作用**:启用异步支持
以上是Spring Boot中常用的注解大全,涵盖了核心功能、Web开发、数据访问、依赖注入、配置管理、测试等各个方面。根据实际开发需求选择合适的注解可以大大提高开发效率。