【注解】常见 Java 注解系统性知识体系总结(附《全方位对比表》+ 思维导图)

文章目录

常见 Java 注解系统性知识体系总结

一、核心注解分类详解

1. Spring核心组件注解

@Component
  • 所属框架:Spring Framework
  • 作用域:类
  • 核心功能:标注通用组件,自动注册为Spring Bean
  • 常用属性value(指定Bean名称,默认类名首字母小写)
  • 使用场景:不确定层级的通用工具类、基础组件
@Controller
  • 所属框架:Spring Framework
  • 元注解@Component
  • 作用域:类
  • 核心功能:标注Web层控制器,处理HTTP请求并返回视图
  • 使用场景:传统Spring MVC开发,返回JSP/Thymeleaf等视图
@Service
  • 所属框架:Spring Framework
  • 元注解@Component
  • 作用域:类
  • 核心功能:标注业务逻辑层(Service层)组件
  • 使用场景:业务逻辑处理类,如用户服务、订单服务
@Repository
  • 所属框架:Spring Framework
  • 元注解@Component
  • 作用域:类
  • 核心功能:标注数据访问层(DAO层)组件,转换数据库异常为Spring统一异常体系
  • 使用场景:数据库操作类,如MyBatis Mapper、JPA Repository

2. 依赖注入注解

@Autowired
  • 所属框架:Spring Framework
  • 作用域:构造器、方法、字段、参数
  • 核心功能:按类型(byType)自动装配Bean,默认要求依赖必须存在
  • 常用属性required(是否必须注入,默认true
  • 使用场景:自动注入依赖Bean
@Qualifier
  • 所属框架:Spring Framework
  • 作用域:字段、方法、参数、类
  • 核心功能 :配合@Autowired,按名称(byName)指定要注入的Bean
  • 常用属性value(指定Bean名称)
  • 使用场景:解决同类型多Bean冲突
@Resource
  • 所属框架:JSR-250(Java标准)
  • 作用域:字段、方法
  • 核心功能:默认按名称(byName)装配,找不到名称再按类型(byType)
  • 常用属性name(Bean名称)、type(Bean类型)
  • 使用场景 :Java标准依赖注入,替代@Autowired+@Qualifier
@Primary
  • 所属框架:Spring Framework
  • 作用域:类、方法
  • 核心功能 :当存在多个同类型Bean时,标注@Primary的Bean为默认优先注入的Bean
  • 使用场景:设置默认Bean,避免注入冲突

3. Web层注解

@RestController
  • 所属框架:Spring Framework
  • 元注解@Controller + @ResponseBody
  • 作用域:类
  • 核心功能:标注RESTful控制器,所有方法默认返回JSON/XML数据
  • 使用场景:前后端分离的REST API开发
@ResponseBody
  • 所属框架:Spring Framework
  • 作用域:方法、类
  • 核心功能:将方法返回值直接写入HTTP响应体(而非解析为视图)
  • 使用场景 :在@Controller类中单独标注方法返回数据
@RequestBody
  • 所属框架:Spring Framework
  • 作用域:方法参数
  • 核心功能:将HTTP请求体(JSON/XML)绑定到方法参数
  • 常用属性required(是否必须有请求体,默认true
  • 使用场景:接收POST/PUT请求的JSON数据
@RequestParam
  • 所属框架:Spring Framework
  • 作用域:方法参数
  • 核心功能:绑定HTTP请求参数(查询参数或表单参数)到方法参数
  • 常用属性name/value(参数名)、required(是否必须)、defaultValue(默认值)
  • 使用场景 :获取URL查询参数(如?page=1)、表单提交参数
@PathVariable
  • 所属框架:Spring Framework
  • 作用域:方法参数
  • 核心功能 :绑定URL路径变量(如/users/{id}中的id)到方法参数
  • 常用属性name/value(路径变量名)、required(是否必须)
  • 使用场景:RESTful URL中的动态参数
@RequestMapping
  • 所属框架:Spring Framework
  • 作用域:类、方法
  • 核心功能:灵活映射HTTP请求到处理方法,可指定URL、HTTP方法、请求头等
  • 常用属性value/path(URL路径)、method(HTTP方法)、consumes(请求Content-Type)、produces(响应Content-Type)
  • 使用场景:定义请求映射(类上定义基础路径,方法上定义具体路径)
@GetMapping/@PostMapping/@PutMapping/@DeleteMapping
  • 所属框架:Spring Framework
  • 元注解@RequestMapping(method = 对应HTTP方法)
  • 作用域:方法
  • 核心功能 :简化@RequestMapping,专门处理对应HTTP方法的请求
  • 使用场景:RESTful资源操作(GET查询、POST创建、PUT更新、DELETE删除)
@RestControllerAdvice
  • 所属框架:Spring Framework
  • 元注解@ControllerAdvice + @ResponseBody
  • 作用域:类
  • 核心功能:全局异常处理、全局数据绑定,专门用于RESTful服务
  • 常用属性basePackages(扫描包路径)、annotations(指定注解)
  • 使用场景:统一处理REST API的异常,返回JSON格式错误信息
@ExceptionHandler
  • 所属框架:Spring Framework
  • 作用域:方法
  • 核心功能:标注异常处理方法,处理指定类型的异常
  • 常用属性value(要处理的异常类型数组)
  • 使用场景 :在@RestControllerAdvice类中定义异常处理逻辑

4. 配置与启动注解

@Configuration
  • 所属框架:Spring Framework
  • 元注解@Component
  • 作用域:类
  • 核心功能 :标注配置类,替代XML配置,类中通过@Bean方法定义Bean
  • 使用场景:Java配置类,定义Bean、配置第三方组件
@ComponentScan
  • 所属框架:Spring Framework
  • 作用域 :类(通常配合@Configuration
  • 核心功能 :指定扫描包路径,自动注册@Component等注解的类为Bean
  • 常用属性basePackages(扫描包路径)、includeFilters(包含过滤器)、excludeFilters(排除过滤器)
  • 使用场景:自定义扫描包路径
@SpringBootApplication
  • 所属框架:Spring Boot
  • 元注解@SpringBootConfiguration + @EnableAutoConfiguration + @ComponentScan
  • 作用域:类(启动类)
  • 核心功能:Spring Boot启动类核心注解,组合配置、自动配置、组件扫描三大功能
  • 常用属性scanBasePackages(扫描包路径)、exclude(排除自动配置类)
  • 使用场景:标注Spring Boot应用入口类
@SpringBootConfiguration
  • 所属框架:Spring Boot
  • 元注解@Configuration
  • 作用域:类
  • 核心功能:标注Spring Boot配置类,语义上更明确
  • 使用场景 :Spring Boot配置类(通常被@SpringBootApplication间接使用)
@EnableAutoConfiguration
  • 所属框架:Spring Boot
  • 作用域:类
  • 核心功能:启用Spring Boot自动配置,根据依赖自动配置Bean
  • 常用属性exclude(排除自动配置类)、excludeName(排除自动配置类名)
  • 使用场景 :自定义自动配置(通常被@SpringBootApplication间接使用)
@Import
  • 所属框架:Spring Framework
  • 作用域:类
  • 核心功能 :导入其他配置类、Bean类或ImportSelector实现类
  • 常用属性value(要导入的类数组)
  • 使用场景:模块化配置,组合多个配置类
@Conditional
  • 所属框架:Spring Framework
  • 作用域:类、方法
  • 核心功能 :按条件装配Bean,满足指定Condition才注册
  • 常用属性valueCondition实现类数组)
  • 使用场景:动态装配(如根据环境变量决定是否注册Bean)

5. 测试注解

@SpringBootTest
  • 所属框架:Spring Boot Test
  • 作用域:类
  • 核心功能:标注Spring Boot集成测试类,启动完整应用上下文
  • 常用属性classes(指定启动类)、webEnvironment(Web环境模式)
  • 使用场景:Spring Boot集成测试(测试Service、Controller等)

6. MyBatis/MyBatis-Plus注解

@Mapper
  • 所属框架:MyBatis
  • 作用域:接口
  • 核心功能:标注Mapper接口,自动生成代理实现类并注册为Bean
  • 使用场景:MyBatis Mapper接口定义
@Select/@Insert/@Update/@Delete
  • 所属框架:MyBatis
  • 作用域:方法
  • 核心功能:标注CRUD方法,直接定义SQL语句(替代XML)
  • 常用属性value(SQL语句)
  • 使用场景:简单CRUD操作,无需复杂XML配置
@TableName
  • 所属框架:MyBatis-Plus
  • 作用域:类
  • 核心功能:标注实体类,指定对应的数据库表名
  • 常用属性value(表名)
  • 使用场景:实体类名与表名不一致时指定表名
@TableId
  • 所属框架:MyBatis-Plus
  • 作用域:字段
  • 核心功能:标注主键字段,指定主键生成策略
  • 常用属性value(字段名)、type(主键策略,如IdType.AUTO自增)
  • 使用场景:实体类主键映射
@TableField
  • 所属框架:MyBatis-Plus
  • 作用域:字段
  • 核心功能:标注非主键字段,指定字段映射、是否插入/更新、填充策略等
  • 常用属性value(字段名)、exist(是否为表字段)、fill(填充策略)
  • 使用场景:字段名与列名不一致、排除非表字段、自动填充(如创建时间)

7. 事务与AOP注解

@Transactional
  • 所属框架:Spring Framework
  • 作用域:类、方法
  • 核心功能:开启声明式事务管理,保证方法内操作要么全部成功要么全部回滚
  • 常用属性propagation(传播行为)、isolation(隔离级别)、rollbackFor(回滚异常类型)
  • 使用场景:业务方法需要事务保证数据一致性(如转账、订单创建)
@Aspect
  • 所属框架:Spring AOP
  • 作用域:类
  • 核心功能:标注切面类,定义横切关注点(如日志、事务)
  • 使用场景:AOP切面定义
@Pointcut
  • 所属框架:Spring AOP
  • 作用域:方法
  • 核心功能:定义切入点(要拦截的方法集合)
  • 常用属性value(切入点表达式,如execution(* com.example.service.*.*(..))
  • 使用场景:复用切入点表达式
@Before/@Around/@After/@AfterReturning/@AfterThrowing
  • 所属框架:Spring AOP
  • 作用域:方法
  • 核心功能:定义通知类型(前置、环绕、后置、返回、异常)
  • 常用属性value(切入点)、returning(返回值参数名)、throwing(异常参数名)
  • 使用场景:方法执行前后的逻辑(如日志、性能监控、异常处理)

8. 其他注解

@Value
  • 所属框架:Spring Framework
  • 作用域:字段、方法、构造参数
  • 核心功能:注入单个配置属性或SpEL表达式结果
  • 常用属性value(属性表达式,如${app.name}
  • 使用场景:单个属性注入
@ConfigurationProperties
  • 所属框架:Spring Boot
  • 作用域:类
  • 核心功能:批量注入配置属性,绑定到类字段(类型安全)
  • 常用属性prefix(配置前缀)、ignoreUnknownFields(忽略未知字段)
  • 使用场景:批量配置注入(如连接池配置、自定义应用配置)
@WebFilter
  • 所属框架:Servlet API
  • 作用域:类
  • 核心功能:标注Servlet过滤器,定义URL匹配规则
  • 常用属性urlPatterns(过滤URL)、filterName(过滤器名称)
  • 使用场景:Web请求过滤(如字符编码、权限验证)
@ServletComponentScan
  • 所属框架:Spring Boot
  • 作用域:类
  • 核心功能 :扫描@WebFilter@WebServlet等Servlet注解
  • 常用属性basePackages(扫描包路径)
  • 使用场景:Spring Boot中使用Servlet原生注解

二、全方位对比表

注解名称 所属框架 核心功能 作用域 关键属性 典型应用场景
@Component Spring Framework 标注通用组件,自动注册为Bean value(Bean名称) 不确定层级的通用组件
@Controller Spring Framework 标注Web层控制器,处理HTTP请求返回视图 value(Bean名称) 传统Spring MVC控制器
@Service Spring Framework 标注业务逻辑层组件 value(Bean名称) Service层业务处理类
@Repository Spring Framework 标注数据访问层组件,转换数据库异常 value(Bean名称) DAO层数据库操作类
@Autowired Spring Framework 按类型自动装配Bean 构造器/方法/字段/参数 required(是否必须) 依赖注入,配合@Qualifier
@Qualifier Spring Framework 配合@Autowired按名称指定Bean 字段/方法/参数/类 value(Bean名称) 解决同类型多Bean冲突
@Resource JSR-250 默认按名称装配,找不到按类型 字段/方法 name(Bean名称)、type(Bean类型) Java标准依赖注入
@Primary Spring Framework 指定同类型Bean的默认优先注入 类/方法 设置默认Bean
@RestController Spring Framework 标注RESTful控制器,所有方法返回JSON/XML value(Bean名称) 前后端分离REST API开发
@ResponseBody Spring Framework 将返回值写入HTTP响应体 方法/类 @Controller中返回数据
@RequestBody Spring Framework 将HTTP请求体绑定到方法参数 方法参数 required(是否必须) 接收POST/PUT的JSON数据
@RequestParam Spring Framework 绑定请求参数到方法参数 方法参数 name/value、required、defaultValue 获取查询参数、表单参数
@PathVariable Spring Framework 绑定URL路径变量到方法参数 方法参数 name/value、required RESTful URL动态参数
@RequestMapping Spring Framework 灵活映射HTTP请求到处理方法 类/方法 value/path、method、consumes、produces 定义请求映射
@GetMapping Spring Framework 专门处理HTTP GET请求 方法 同@RequestMapping 查询资源
@PostMapping Spring Framework 专门处理HTTP POST请求 方法 同@RequestMapping 创建资源
@PutMapping Spring Framework 专门处理HTTP PUT请求 方法 同@RequestMapping 更新资源
@DeleteMapping Spring Framework 专门处理HTTP DELETE请求 方法 同@RequestMapping 删除资源
@RestControllerAdvice Spring Framework 全局异常处理、数据绑定,专门用于REST basePackages、annotations 统一处理REST API异常
@ExceptionHandler Spring Framework 标注异常处理方法 方法 value(异常类型) 定义异常处理逻辑
@Configuration Spring Framework 标注配置类,替代XML配置 value(Bean名称) Java配置类,定义Bean
@ComponentScan Spring Framework 指定扫描包路径,自动注册组件 basePackages、includeFilters、excludeFilters 自定义扫描包
@SpringBootApplication Spring Boot 启动类核心注解,组合配置、自动配置、组件扫描 scanBasePackages、exclude Spring Boot入口类
@SpringBootConfiguration Spring Boot 标注Spring Boot配置类 Spring Boot配置类
@EnableAutoConfiguration Spring Boot 启用自动配置,根据依赖自动配置Bean exclude、excludeName 启用Spring Boot自动配置
@Import Spring Framework 导入配置类、Bean类等 value(导入的类数组) 模块化配置
@Conditional Spring Framework 按条件装配Bean 类/方法 value(Condition实现类) 动态装配Bean
@SpringBootTest Spring Boot Test 标注Spring Boot集成测试类,启动应用上下文 classes、webEnvironment Spring Boot集成测试
@Mapper MyBatis 标注Mapper接口,生成代理实现类 接口 MyBatis Mapper接口定义
@Select MyBatis 标注查询方法,定义SQL 方法 value(SQL语句) 简单查询
@Insert MyBatis 标注插入方法,定义SQL 方法 value(SQL语句) 简单插入
@Update MyBatis 标注更新方法,定义SQL 方法 value(SQL语句) 简单更新
@Delete MyBatis 标注删除方法,定义SQL 方法 value(SQL语句) 简单删除
@TableName MyBatis-Plus 标注实体类,指定数据库表名 value(表名) 实体类与表名映射
@TableId MyBatis-Plus 标注主键字段,指定主键策略 字段 value(字段名)、type(主键策略) 实体类主键映射
@TableField MyBatis-Plus 标注非主键字段,指定字段映射、填充策略等 字段 value(字段名)、exist、fill 实体类字段映射、自动填充
@Transactional Spring Framework 开启声明式事务管理 类/方法 propagation、isolation、timeout、readOnly、rollbackFor 业务方法事务保证
@Aspect Spring AOP 标注切面类 AOP切面定义
@Pointcut Spring AOP 定义切入点 方法 value(切入点表达式) 复用切入点表达式
@Before Spring AOP 前置通知,目标方法执行前执行 方法 value(切入点) 方法前逻辑(日志、权限)
@Around Spring AOP 环绕通知,目标方法执行前后执行,可控制执行 方法 value(切入点) 性能监控、事务控制
@After Spring AOP 后置通知,目标方法执行后(无论异常)执行 方法 value(切入点) 资源释放
@AfterReturning Spring AOP 返回通知,目标方法正常返回后执行 方法 value(切入点)、returning(返回值参数名) 获取返回值
@AfterThrowing Spring AOP 异常通知,目标方法抛出异常后执行 方法 value(切入点)、throwing(异常参数名) 异常监控
@Value Spring Framework 注入单个配置属性或SpEL表达式结果 字段/方法/构造参数 value(属性表达式) 单个属性注入
@ConfigurationProperties Spring Boot 批量注入配置属性,绑定到类字段 prefix、ignoreUnknownFields 批量配置注入,类型安全
@WebFilter Servlet API 标注Servlet过滤器 urlPatterns、filterName Web请求过滤(编码、权限)
@ServletComponentScan Spring Boot 扫描Servlet注解(@WebFilter等) basePackages Spring Boot中使用Servlet原生注解

三、思维导图

相关推荐
web守墓人2 小时前
【前端】记一次将ruoyi vue3 element-plus迁移到arco design vue的经历
前端·vue.js·arco design
伊步沁心2 小时前
Webpack & Vite 深度解析
前端
libokaifa2 小时前
OpenSpec + TDD:让 AI 写代码,用测试兜底
前端·ai编程
用户15815963743702 小时前
搭 AI Agent 团队踩了 18 个坑,总结出这 5 个关键步骤
前端
Kellen2 小时前
Fumadocs 基础概念:从内容源到页面渲染
前端
Lee川2 小时前
前端进阶之路:从性能优化到响应式布局的实战指南(Tailwindcss)
前端·面试
努力干饭中2 小时前
Git Rebase 最佳实践
前端·git
小飞Coding2 小时前
MyBatis Mapper 实现原理彻底解密——从动态代理到 JDBC 执行全链路剖析
后端·mybatis
Ferries2 小时前
《从前端到 Agent》系列|02:应用层-提示词工程 (Prompt Engineering)
前端·人工智能·深度学习