核心容器与配置


注解说明
@Configuration 标记类为配置类,替代 XML 配置
@Bean 在配置类中声明一个 Bean,由 Spring 容器管理
@Component 通用组件注解,标记类为 Spring 管理的 Bean
@ComponentScan 自动扫描并注册指定包下的组件(如@Component@Service等)
@Import 导入其他配置类或组件(如@Configuration类)
@PropertySource 加载外部属性文件(如.properties.yml
@Lazy 延迟初始化 Bean
@Scope 定义 Bean 的作用域(如singleton 、prototype 、request等)
@DependsOn 指定当前 Bean 依赖的其他 Bean,确保初始化顺序
@Profile 指定 Bean 或配置仅在特定环境下生效(如devprod
@Conditional 基于条件决定是否注册 Bean(自定义条件逻辑)
@Service 标记服务层组件(@Component的特化)
@Repository 标记数据访问层组件(@Component的特化),支持异常转换
@Controller 标记 MVC 控制器组件(@Component的特化)
@Role 定义 Bean 的角色(如ROLE_APPLICATION 、ROLE_INFRASTRUCTURE
@Description 为 Bean 添加描述信息(通常用于监控或文档)
@PropertySources 组合多个@PropertySource
@ImportResource 导入 XML 配置文件
@Order 定义 Bean 的加载顺序(值越小优先级越高)
@AliasFor 为注解属性声明别名(用于元注解组合)
@RequestScope 定义 Bean 的作用域为 HTTP 请求级别
@SessionScope 定义 Bean 的作用域为 HTTP 会话级别
@ApplicationScope 定义 Bean 的作用域为 ServletContext 级别

依赖注入(DI)


注解说明
@Autowired 自动注入依赖(默认按类型匹配)
@Qualifier 按名称指定注入的 Bean,配合@Autowired使用
@Primary 当存在多个同类型 Bean 时,优先注入被标记的 Bean
@Value 注入属性值(如@Value("${key}")或 SpEL 表达式)
@Required 标记 Bean 属性为必需(已过时,推荐使用构造器注入)
@Lookup 声明查找方法,用于获取原型作用域的 Bean
@Resource JSR-250 注解,按名称注入依赖(类似@Autowired + @Qualifier
@Inject JSR-330 注解(需引入javax.inject),功能类似@Autowired

AOP 与切面编程


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

数据访问与事务


注解说明
@Transactional 声明事务管理(类或方法级别),可配置隔离级别、传播行为等
@Repository 标记数据访问层(DAO)组件,支持异常转换(如将 SQL 异常转换为 Spring 异常)
@PersistenceContext 注入 JPA 的EntityManager
@PersistenceUnit 注入 JPA 的EntityManagerFactory
@Sql 在测试方法执行前 / 后运行 SQL 脚本
@SqlMergeMode 控制测试类与方法的@Sql注解合并方式

Web/MVC 相关


注解说明
@Controller 标记类为 MVC 控制器
@RequestMapping 映射 HTTP 请求路径(支持method 、produces等属性)
@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")
@PutMapping @RequestMapping(method = PUT)的快捷方式
@DeleteMapping @RequestMapping(method = DELETE)的快捷方式
@PatchMapping @RequestMapping(method = PATCH)的快捷方式
@MatrixVariable 绑定 URL 矩阵变量(如/users;id=1
@RestControllerAdvice 组合@ControllerAdvice@ResponseBody
@ResponseStatus 定义 HTTP 响应状态码(如@ResponseStatus(HttpStatus.NOT_FOUND)

测试相关


注解说明
@ContextConfiguration 指定测试类的 Spring 配置(如 XML 或配置类)
@WebAppConfiguration 标记测试类需要加载 Web 应用上下文
@DirtiesContext 标记测试后需要重置 Spring 上下文
@TestExecutionListeners 自定义测试执行监听器
@TestPropertySource 为测试类指定属性文件或键值对
@DynamicPropertySource 动态注册测试属性(如集成测试中的数据库端口)
@Sql 在测试方法执行前 / 后运行 SQL 脚本

事件与异步


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

消息与 WebSocket


注解说明
@MessageMapping 映射消息到处理方法(如 WebSocket 消息)
@SubscribeMapping 处理订阅请求(如 STOMP 协议)
@SendTo 指定方法返回值的发送目标(如广播消息)
@DestinationVariable 绑定消息目标路径中的变量
@MessageExceptionHandler 处理消息处理过程中的异常

缓存相关


注解说明
@Cacheable 缓存方法结果(需启用@EnableCaching
@CachePut 更新缓存
@CacheEvict 清除缓存
@Caching 组合多个缓存操作
@CacheConfig 在类级别统一配置缓存属性
@EnableCaching 启用缓存支持

校验与格式化


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

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

空安全注解


注解说明
@NonNull 标记字段、参数或返回值不可为null(编译时检查)
@Nullable 标记字段、参数或返回值可为null
@NonNullApi 包级别注解,默认所有参数和返回值不可为null
@NonNullFields 包级别注解,默认所有字段不可为null

响应式编程(WebFlux)


注解说明
@WebFluxTest 针对 WebFlux 控制器的切片测试
@EnableWebFlux 启用 WebFlux 配置(替代@EnableWebMvc

国际化与资源


注解说明
@MessageSource 注入国际化消息源(需配置ResourceBundleMessageSource
posted on 2025-03-03 17:03  EEEEEEEEEEEEEEEEEEE  阅读(225)  评论(0)    收藏  举报