1. **@EnableJpaRepositories**
- 用于启用 JPA 数据库操作相关的仓库。
- 通常与 `@Entity` 和 `@Repository` 一起使用,以定义实体类和数据访问接口。
2. **@EnableCaching**
- 启用缓存支持。
- 需要与 `@Cacheable`, `@CachePut`, `@CacheEvict` 等注解配合使用,以便在方法级别进行缓存操作。
3. **@Cacheable**
- 标记在方法上,表示该方法的返回结果应当被缓存。
- 可以指定缓存的名称和其他配置属性。
4. **@CachePut**
- 标记在方法上,表示该方法的返回结果应当更新到缓存中。
- 通常用于更新缓存中的数据。
5. **@CacheEvict**
- 标记在方法上,表示该方法调用后应当清除缓存中的数据。
- 通常用于删除缓存中的数据。
6. **@Async**
- 标记在方法上,表示该方法应当异步执行。
- 需要在配置类中使用 `@EnableAsync` 来启用异步支持。
7. **@Profile**
- 标记在类或方法上,表示该类或方法仅在特定的 Spring 配置文件中可用。
- 例如,你可以为开发、测试和生产环境定义不同的配置。
8. **@ConditionalOnBean**
- 标记在类或方法上,表示该类或方法仅当容器中存在指定的 Bean 时才生效。
- 用于条件化地配置组件。
9. **@ConditionalOnClass**
- 标记在类或方法上,表示该类或方法仅当类路径中存在指定的类时才生效。
- 用于检查依赖是否已添加到项目中。
10. **@ConditionalOnMissingBean**
- 标记在类或方法上,表示该类或方法仅当容器中不存在指定类型的 Bean 时才生效。
- 用于确保不会重复配置相同的 Bean。
11. **@Value**
- 用于注入配置文件中的值。
- 通常用于注入静态属性,如数据库连接字符串等。
12. **@PropertySource**
- 用于指定外部属性文件的位置,以覆盖默认的属性设置。
- 通常与 `@Value` 配合使用。
13. **@ConfigurationProperties**
- 用于绑定配置文件中的属性到 Java 类中。
- 通常用于配置类,可以自动将配置文件中的属性映射到对应的 Java 对象属性。
14. **@Qualifier**
- 用于区分具有相同类型的多个 Bean。
- 通常与 `@Autowired` 一起使用,以便在注入多个同类型 Bean 时指定具体注入哪一个。
15. **@Scope**
- 用于定义 Bean 的作用域。
- 可以为 Bean 设置不同的生命周期,如单例(`singleton`)、原型(`prototype`)等。
16. **@PostConstruct**
- 标记在方法上,表示该方法在依赖注入完成后由 Spring 调用。
- 用于初始化操作。
17. **@PreDestroy**
- 标记在方法上,表示该方法在 Bean 销毁之前由 Spring 调用。
- 用于清理操作。
18. **@EnableScheduling**
- 用于启用定时任务支持。
- 通常与 `@Scheduled` 注解一起使用。
19. **@Scheduled**
- 标记在方法上,表示该方法应当按照指定的时间间隔执行。
- 用于实现定时任务。
20. **@Slf4j**
- 不是 Spring Boot 的注解,但经常与 Spring Boot 应用一起使用。
- 用于简化日志记录。
这些注解可以帮助你更好地管理和扩展 Spring Boot 应用程序的功能。了解这些注解的具体用途和使用方法,将有助于你构建出更加健壮和灵活的应用程序。