2026/1/16 4:10:42
网站建设
项目流程
网站后台中文模板,北京网站搭建公司排名,通州设计网站建设,资源搜索引擎搜索神器网Spring常用注解分类整理
一、核心容器注解
1. 组件标识类
注解作用应用场景Component通用组件标识#xff0c;将类注册为Spring Bean工具类、通用服务类Service业务逻辑层组件#xff08;语义化#xff09;Service层#xff0c;如UserServiceRepository数据访问层组件Component通用组件标识将类注册为Spring Bean工具类、通用服务类Service业务逻辑层组件语义化Service层如UserServiceRepository数据访问层组件自动转换持久层异常DAO层、MyBatis Mapper接口ControllerWeb控制器组件返回视图MVC架构的Controller层RestControllerController ResponseBody组合返回JSONRESTful API接口层示例RestControllerRequestMapping(/api/users)publicclassUserController{AutowiredprivateUserServiceuserService;}2. 依赖注入类注解作用应用场景Autowired按类型自动装配Spring核心注解构造函数、字段、Setter注入Qualifier指定Bean名称解决同一类型多个Bean冲突配合Autowired精准匹配Resource按名称自动装配JDK标准注解需要与Spring解耦的场景Value注入配置文件中的值或SpEL表达式注入application.yml中的配置项示例ServicepublicclassOrderService{// 推荐构造函数注入无需AutowiredprivatefinalUserServiceuserService;publicOrderService(UserServiceuserService){this.userServiceuserService;}Value(${app.max-order-limit})privateIntegermaxOrderLimit;}3. Bean作用域与生命周期注解作用应用场景Scope指定Bean作用域singleton/prototype/request/session每次请求需要新实例时如多线程环境PostConstructBean属性设置后执行初始化方法缓存预热、连接池初始化PreDestroyBean销毁前执行清理方法资源释放、线程池关闭Lazy延迟初始化Bean优化启动速度、大对象按需加载二、Web层注解Spring MVC1. 请求映射注解作用应用场景RequestMapping通用请求路径映射支持GET/POST等类或方法级别路由定义GetMappingGET请求快捷注解查询接口如/api/users/{id}PostMappingPOST请求快捷注解创建资源接口PutMappingPUT请求快捷注解全量更新接口PatchMappingPATCH请求快捷注解部分更新接口DeleteMappingDELETE请求快捷注解删除资源接口2. 参数处理注解作用应用场景RequestParam获取URL查询参数或表单参数?page1size10分页参数PathVariable获取URL路径变量REST风格/users/{userId}RequestBody将请求体JSON转为Java对象POST/PUT请求接收复杂对象ResponseBody将返回值转为JSON响应RestController已包含需要返回JSON而非视图时RequestHeader获取请求头信息获取Authorization、Trace-IdCookieValue获取Cookie值读取会话Cookie示例GetMapping(/{id})publicResponseEntityUserDTOgetUser(PathVariableLongid,RequestParam(defaultValuefalse)booleanincludeDetails){returnResponseEntity.ok(userService.getUser(id,includeDetails));}3. 响应与异常注解作用应用场景ResponseStatus指定HTTP响应状态码创建资源返回201无内容返回204ExceptionHandler局部异常处理方法单个Controller内异常处理ControllerAdvice全局异常处理类统一处理所有Controller异常RestControllerAdviceControllerAdvice ResponseBody全局异常返回JSON三、数据访问与事务注解1. JPA/Hibernate注解作用应用场景Entity标识JPA实体类数据库表映射对象Table指定实体对应的表名自定义表名、schemaId标识主键字段实体主键GeneratedValue主键生成策略自增ID、UUIDColumn字段映射配置列名、长度、非空约束2. MyBatis注解作用应用场景Mapper标识MyBatis Mapper接口DAO接口替代XML配置Select/Insert/Update/Delete直接写SQL语句简单SQL场景3. 事务管理注解作用应用场景Transactional声明式事务管理Service层方法确保数据一致性EnableTransactionManagement启用事务管理功能主配置类上开启事务支持事务传播行为Transactional(propagation ...)REQUIRED默认需要事务无则创建有则加入REQUIRES_NEW总是创建新事务NESTED嵌套事务需数据库支持四、AOP注解注解作用应用场景Aspect标识切面类日志、权限、性能监控等横切关注点Pointcut定义切点表达式复用切点定义Before前置通知权限校验、参数验证After后置通知finally块资源释放AfterReturning返回后通知日志记录、结果处理AfterThrowing抛出异常后通知异常日志、告警Around环绕通知功能最强大性能统计、事务管理、缓存示例AspectComponentpublicclassLoggingAspect{Around(within(org.springframework.web.bind.annotation.RestController))publicObjectlogAround(ProceedingJoinPointjoinPoint)throwsThrowable{longstartSystem.currentTimeMillis();try{returnjoinPoint.proceed();}finally{log.info(执行时间: {}ms,System.currentTimeMillis()-start);}}}五、配置与条件注解1. 配置类注解作用应用场景Configuration标识配置类替代XML配置第三方Bean注册、复杂配置Bean注册第三方库Bean如RestTemplate、DataSourceImport导入其他配置类模块化配置拆分PropertySource加载外部properties文件自定义配置文件ConfigurationProperties批量绑定配置文件到Bean配置项分组管理2. 条件注解注解作用应用场景Conditional条件化注册Bean自定义条件逻辑ConditionalOnClass类路径存在某类时注册自动配置如存在DataSource类ConditionalOnMissingBean缺失某Bean时注册提供默认实现可被覆盖ConditionalOnProperty配置项匹配时注册功能开关如app.feature.xxx.enabledtrue六、异步与调度注解注解作用应用场景Async异步执行方法不影响主流程的操作如发邮件、日志EnableAsync启用异步功能主配置类Scheduled定时任务cron/fixedDelay/fixedRate定时数据同步、清理任务EnableScheduling启用定时任务主配置类示例Async(taskExecutor)publicCompletableFutureStringsendEmailAsync(Stringto){// 异步发送邮件}Scheduled(cron0 0 3 * * ?)// 每天凌晨3点执行publicvoidcleanExpiredData(){// 清理过期数据}七、缓存注解注解作用应用场景Cacheable缓存查询结果低频变更的数据如字典、配置CachePut更新缓存不影响方法执行数据更新时同步缓存CacheEvict删除缓存数据删除时清除缓存Caching组合多个缓存操作复杂缓存逻辑EnableCaching启用缓存功能主配置类示例Cacheable(valueusers,key#id)publicUsergetUser(Longid){returnuserMapper.selectById(id);}CacheEvict(valueusers,key#id)publicvoiddeleteUser(Longid){userMapper.deleteById(id);}八、测试相关注解注解作用应用场景SpringBootTest启动完整Spring容器进行集成测试全流程功能测试WebMvcTest仅测试MVC层轻量级Controller层单元测试MockBean创建Mock对象注入容器隔离外部依赖DataJpaTest仅测试JPA数据访问层Repository层测试九、总结与选型建议高频组合REST APIRestControllerRequestMappingGetMapping/PostMapping分层架构Controller→Service→Repository依赖注入构造函数 Autowired或无需注解事务控制ServiceTransactional配置管理ConfigurationPropertiesConfiguration最佳实践构造函数注入优先于字段注入可测试性更好Qualifier解决同一类型多个Bean冲突RestControllerAdvice统一异常处理和响应封装ConditionalOnProperty实现功能开关和灰度发布Async Transactional异步方法无法传递事务上下文通过合理使用这些注解可以实现声明式编程大幅减少样板代码提升开发效率。