spring的常用注解汇总

在 Spring 和 Spring Boot 框架中,有许多核心注解被广泛应用。以下是常用的关键注解分类详解:


一、组件声明与依赖注入

注解 作用 示例
@Component 通用组件声明 (Bean 的泛化形式) @Component public class ServiceImpl {...}
@Service 标记服务层(业务逻辑层)组件 @Service public class UserService {...}
@Repository 标记持久层(DAO 层)组件,自动处理数据库异常 @Repository public class UserDao {...}
@Controller 标记 Web 控制器组件 @Controller public class UserCtrl {...}
@RestController @Controller + @ResponseBody(REST API 专用) @RestController public class ApiCtrl {...}
@Autowired 自动按类型依赖注入 @Autowired private UserService service;
@Qualifier 按名称指定注入的 Bean @Qualifier("mainDB") DataSource ds;
@Resource JSR-250 标准注入(按名称) @Resource(name="slaveDB") DataSource ds;

二、配置与属性管理

注解 作用
@Configuration 声明配置类(替代 XML 配置)
@Bean 声明方法返回对象作为 Spring Bean
@Value 注入外部配置值${property.key}
@ConfigurationProperties 批量绑定配置文件到 POJO (比 @Value 更结构化)
@PropertySource 加载自定义 properties 文件
@EnableConfigurationProperties 启用配置属性绑定

三、Web 与请求处理

注解 HTTP 方法 作用
@RequestMapping 通用映射 类/方法级别的请求映射
@GetMapping GET 简化版 GET 请求映射
@PostMapping POST 简化版 POST 请求映射
@PutMapping PUT 简化版 PUT 请求映射
@DeleteMapping DELETE 简化版 DELETE 请求映射
@PatchMapping PATCH 简化版 PATCH 请求映射
@RequestParam - 获取 URL 查询参数
@PathVariable - 获取 URL 路径变量
@RequestBody - 接收 HTTP 请求体(如 JSON)
@ResponseBody - 直接返回数据(非视图)
@CookieValue - 获取 Cookie 值
@SessionAttribute - 访问会话属性

四、事务管理

注解 作用
@Transactional 声明式事务管理(类/方法级)
@EnableTransactionManagement 在配置类启用注解驱动的事务管理

五、测试相关

注解 作用
@SpringBootTest 启动完整的 Spring Boot 测试环境
@WebMvcTest 专注于 MVC 控制器的测试(不加载完整上下文)
@DataJpaTest 专注于 JPA 测试(使用内存数据库)
@MockBean 在测试上下文中注入 Mock 对象
@Test 标记测试方法(JUnit)

六、AOP 面向切面编程

注解 作用
@Aspect 声明切面类
@Before 方法执行前切入
@After 方法执行后切入(无论是否异常)
@AfterReturning 方法正常返回后切入
@AfterThrowing 方法抛出异常后切入
@Around 环绕增强(最强大的通知类型)
@Pointcut 定义可重用的切入点表达式

七、条件化配置 (Spring Boot)

注解 作用
@ConditionalOnProperty 当配置属性存在且匹配时生效
@ConditionalOnBean 当指定 Bean 存在时生效
@ConditionalOnMissingBean 当指定 Bean 不存在时生效
@ConditionalOnClass 当指定类在 classpath 存在时生效
@ConditionalOnWebApplication 当是 Web 应用时生效

八、调度与异步

注解 作用
@Scheduled 定时任务调度(支持 cron 表达式)
@EnableScheduling 启用定时任务支持
@Async 异步执行方法
@EnableAsync 启用异步执行支持

九、缓存管理

注解 作用
@Cacheable 缓存方法结果
@CachePut 更新缓存
@CacheEvict 清除缓存
@EnableCaching 启用缓存注解支持

十、其他实用注解

注解 作用
@Lazy 延迟初始化 Bean
@Primary 指定同类型 Bean 的优先注入选项
@Scope 定义 Bean 作用域(singleton, prototype 等)
@Profile 按环境激活配置(dev, test, prod)
@Valid 触发 JSR-303 Bean 校验(配合 @NotNull 等)

📌 最佳实践建议

  • 优先使用 @ConfigurationProperties 替代分散的 @Value
  • REST API 开发首选 @RestController + HTTP 方法注解
  • 数据库操作使用 @Transactional 确保事务完整性
  • 生产环境配置 @Profile("prod") 分离环境参数

这些注解共同构成了 Spring 生态的基石,通过声明式编程极大简化了企业级应用开发。掌握它们是高效使用 Spring 框架的关键。