Spring Boot 注解大全(详细版)

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开发、数据访问、依赖注入、配置管理、测试等各个方面。根据实际开发需求选择合适的注解可以大大提高开发效率。

你可能感兴趣的:(spring,boot,后端,java)