1. 核心容器与配置

注解说明
@Configuration 标记类为配置类,替代 XML 配置。
@Bean 在配置类中声明一个 Bean,由 Spring 容器管理。
@Component 通用组件注解,标记类为 Spring 管理的 Bean。
@ComponentScan 自动扫描并注册指定包下的组件(如 @Component@Service 等)。
@Import 导入其他配置类或组件(如 @Configuration 类)。
@PropertySource 加载外部属性文件(如 .properties 或 .yml)。
@Lazy 延迟初始化 Bean。
@Scope 定义 Bean 的作用域(如 singletonprototyperequest 等)。
@DependsOn 指定当前 Bean 依赖的其他 Bean,确保初始化顺序。
@Profile 指定 Bean 或配置仅在特定环境下生效(如 devprod)。
@Conditional 基于条件决定是否注册 Bean(自定义条件逻辑)。

2. 依赖注入(DI)

注解说明
@Autowired 自动注入依赖(默认按类型匹配)。
@Qualifier 按名称指定注入的 Bean,配合 @Autowired 使用。
@Primary 当存在多个同类型 Bean 时,优先注入被标记的 Bean。
@Value 注入属性值(如 @Value("${key}") 或 SpEL 表达式)。
@Required 标记 Bean 属性为必需(已过时,推荐使用构造器注入)。

3. AOP 与 切面编程

注解说明
@Aspect 标记类为切面类。
@Pointcut 定义切点表达式,指定切入点。
@Before 在目标方法执行前执行。
@After 在目标方法执行后执行(无论是否抛出异常)。
@AfterReturning 在目标方法成功返回后执行。
@AfterThrowing 在目标方法抛出异常后执行。
@Around 环绕通知,可完全控制目标方法执行。
@EnableAspectJAutoProxy 启用 AspectJ 自动代理(需配合 @Configuration)。

4. 数据访问与事务

注解说明
@Transactional 声明事务管理(类或方法级别),可配置隔离级别、传播行为等。
@Repository 标记数据访问层(DAO)组件,支持异常转换(如将 SQL 异常转换为 Spring 异常)。
@PersistenceContext 注入 JPA 的 EntityManager
@PersistenceUnit 注入 JPA 的 EntityManagerFactory

5. Web/MVC 相关

注解说明
@Controller 标记类为 MVC 控制器。
@RequestMapping 映射 HTTP 请求路径(支持 methodproduces 等属性)。
@RequestParam 绑定请求参数到方法参数。
@PathVariable 绑定 URL 路径变量到方法参数。
@RequestBody 将请求体反序列化为对象(如 JSON/XML)。
@ResponseBody 将方法返回值序列化为响应体(如 JSON)。
@ModelAttribute 绑定请求参数到模型对象,或添加模型数据。
@SessionAttributes 将模型属性存储到 HTTP Session 中。
@CookieValue 绑定 Cookie 值到方法参数。
@RequestHeader 绑定请求头到方法参数。
@ExceptionHandler 处理控制器内的异常。
@ControllerAdvice 全局异常处理类,可结合 @ExceptionHandler
@InitBinder 自定义请求参数绑定逻辑。
@CrossOrigin 允许跨域请求(Spring 4.2+ 支持)。
@RestController 组合 @Controller 和 @ResponseBody(Spring 4.0+)。
@GetMapping/@PostMapping @RequestMapping 的快捷方式(如 @GetMapping("/path"))。

6. 测试相关

注解说明
@ContextConfiguration 指定测试类的 Spring 配置(如 XML 或配置类)。
@WebAppConfiguration 标记测试类需要加载 Web 应用上下文。
@DirtiesContext 标记测试后需要重置 Spring 上下文。
@TestExecutionListeners 自定义测试执行监听器。
@Sql 在测试方法执行前/后运行 SQL 脚本。

7. 事件与异步

注解说明
@EventListener 标记方法为事件监听器(监听 Spring 事件)。
@Async 标记方法为异步执行(需启用 @EnableAsync)。
@EnableAsync 启用异步方法执行支持。
@Scheduled 定义定时任务(需启用 @EnableScheduling)。
@EnableScheduling 启用定时任务支持。

8. JSR 标准注解支持

注解说明
@PostConstruct JSR-250 注解,标记 Bean 初始化后执行的方法。
@PreDestroy JSR-250 注解,标记 Bean 销毁前执行的方法。
@Resource JSR-250 注解,按名称注入依赖(类似 @Autowired + @Qualifier)。
@Inject JSR-330 注解(需引入 javax.inject),功能类似 @Autowired
@Named JSR-330 注解,功能类似 @Component 或 @Qualifier

9. 缓存相关

注解说明
@Cacheable 缓存方法结果(需启用 @EnableCaching)。
@CachePut 更新缓存。
@CacheEvict 清除缓存。
@Caching 组合多个缓存操作。
@EnableCaching 启用缓存支持。

10. 校验与格式化

注解说明
@Valid 触发 Bean 验证(JSR-303/JSR-349 规范,需引入 Hibernate Validator)。
@Validated Spring 的校验注解,支持分组校验。
@DateTimeFormat 格式化日期时间字段(如 @DateTimeFormat(pattern = "yyyy-MM-dd"))。
@NumberFormat 格式化数字字段。

11. 其他重要注解

注解说明
@EnableWebMvc 启用 Spring MVC 配置(需自定义 MVC 配置时使用)。
@ImportResource 导入 XML 配置文件。
@Order 定义 Bean 的加载顺序(值越小优先级越高)。
@AliasFor 为注解属性声明别名(用于元注解组合)。

总结

  • Spring Framework 是 Spring Boot 的基础,大部分注解直接继承自 Spring Framework。

  • Spring Boot 通过自动配置简化了 Spring Framework 的显式配置(如 @SpringBootApplication 组合了多个底层注解)。

  • 注解的具体行为可能依赖其他模块(如 @Transactional 需引入 spring-tx,数据访问需 spring-jdbc 或 spring-data-jpa)。

  • 详细文档参考:Spring Framework Documentation

posted on 2025-03-03 16:57  EEEEEEEEEEEEEEEEEEE  阅读(74)  评论(0)    收藏  举报