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

简介: 本文系统梳理Java主流注解体系,涵盖Spring核心组件(@Component、@Service等)、依赖注入(@Autowired、@Resource)、Web开发(@RestController、@PathVariable)、配置启动(@SpringBootApplication、@Configuration)、MyBatis/Plus、事务AOP(@Transactional、@Aspect)及测试等八大类,辅以对比表格及思维导图。

常见 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原生注解

三、思维导图

常见 Java 注解系统性知识体系总结——思维导图

相关文章
|
10天前
|
人工智能 JSON 机器人
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
本文带你零成本玩转OpenClaw:学生认证白嫖6个月阿里云服务器,手把手配置飞书机器人、接入免费/高性价比AI模型(NVIDIA/通义),并打造微信公众号“全自动分身”——实时抓热榜、AI选题拆解、一键发布草稿,5分钟完成热点→文章全流程!
11192 104
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
|
10天前
|
人工智能 IDE API
2026年国内 Codex 安装教程和使用教程:GPT-5.4 完整指南
Codex已进化为AI编程智能体,不仅能补全代码,更能理解项目、自动重构、执行任务。本文详解国内安装、GPT-5.4接入、cc-switch中转配置及实战开发流程,助你从零掌握“描述需求→AI实现”的新一代工程范式。(239字)
5827 136
|
8天前
|
人工智能 并行计算 Linux
本地私有化AI助手搭建指南:Ollama+Qwen3.5-27B+OpenClaw阿里云/本地部署流程
本文提供的全流程方案,从Ollama安装、Qwen3.5-27B部署,到OpenClaw全平台安装与模型对接,再到RTX 4090专属优化,覆盖了搭建过程的每一个关键环节,所有代码命令可直接复制执行。使用过程中,建议优先使用本地模型保障隐私,按需切换云端模型补充功能,同时注重显卡温度与显存占用监控,确保系统稳定运行。
2007 6
|
6天前
|
人工智能 自然语言处理 供应链
【最新】阿里云ClawHub Skill扫描:3万个AI Agent技能中的安全度量
阿里云扫描3万+AI Skill,发现AI检测引擎可识别80%+威胁,远高于传统引擎。
1409 3
|
7天前
|
人工智能 Linux API
离线AI部署终极手册:OpenClaw+Ollama本地模型匹配、全环境搭建与问题一站式解决
在本地私有化部署AI智能体,已成为隐私敏感、低成本、稳定运行的主流方案。OpenClaw作为轻量化可扩展Agent框架,搭配Ollama本地大模型运行工具,可实现完全离线、无API依赖、无流量费用的个人数字助理。但很多用户在实践中面临三大难题:**不知道自己硬件能跑什么模型、显存/内存频繁爆仓、Skills功能因模型不支持工具调用而失效**。
3389 7