【注解】常见 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 注解系统性知识体系总结——思维导图

相关文章
|
24天前
|
Java 数据库 数据格式
【Spring注解】Spring生态常见注解——面试高频考点总结
本文系统梳理Spring生态高频面试注解考点,直击本质——注解只是表象,核心考察IOC容器、Bean生命周期、MVC流程、AOP代理、自动配置与事务机制等底层原理。涵盖@Component/@Configuration、@Autowired/@Resource、@RestController、@Transactional、@SpringBootApplication、@RequestBody等七大类注解的辨析、原理、坑点 及 TOP10 必背题。
294 12
|
1月前
|
安全 Java 数据库连接
【反射】Java反射 全方位知识体系(附 应用场景 + 《八股文常考面试题》)
Java反射是运行时动态获取类元信息(构造器、方法、字段等)并操作对象的能力,核心为 Class对象。广泛应用于Spring、MyBatis等框架的IoC、AOP、ORM映射,以及注解处理、动态代理、SPI扩展等场景,兼具灵活性与解耦优势,但存在性能开销和安全风险。
241 10
|
1月前
|
存储 前端开发 数据库
【VO、DTO、Entity】VO、DTO、Entity三大核心数据对象全解析(附核心对比表 + 代码示例)
本文系统解析VO、DTO、Entity三大核心数据对象,涵盖其在分层架构、DDD与微服务中的定位、职责边界、设计规范及全链路流转规则,辅以对比表、代码示例与避坑指南,助你构建高内聚、低耦合、安全可维护的企业级数据模型体系。
【VO、DTO、Entity】VO、DTO、Entity三大核心数据对象全解析(附核心对比表 + 代码示例)
|
28天前
|
SQL 前端开发 Java
【分层架构】Spring MVC三层架构 / DDD领域驱动四层架构 / 微服务分布式架构(DAO/Mapper/Repository/Service/Controller/Manager)
本文系统解析Java企业级分层架构(Controller/Service/Manager/Repository/DAO/Mapper),阐明各层职责边界、设计原则与典型误区,强调单一职责、依赖倒置、关注点分离等核心思想,助力构建高内聚、低耦合、易维护的可扩展系统。
662 11
|
28天前
|
前端开发 Java 数据库
【数据载体POJO】POJO / DO / PO / DTO / VO / BO / Query / Entity / TO 全方位对比分析
本文系统解析Java企业级开发中各类数据载体(POJO/PO/DO/Entity/BO/DTO/TO/VO/Query)的本质、分层定位与使用边界,强调分层解耦、数据安全与职责单一原则,覆盖DDD、微服务及Spring生态实践,助力构建高内聚、低耦合的健壮架构。
|
27天前
|
SQL 关系型数据库 数据库
【数据库】多表关系与多表查询-全维度对比(附《思维导图》)
本文系统讲解多表关系与多表查询,涵盖底层原理、范式设计、JOIN/UNION/子查询语法、CTE递归、性能优化及高频避坑指南,适配MySQL/PostgreSQL,助你从入门直达企业级实战。
|
1月前
|
缓存 Java 数据库
【Spring Boot】Spring Boot 全体系知识结构化拆解(附 Spring Boot 高频面试八股文精简版)
Spring Boot 是 Pivotal 基于 Spring 的“约定大于配置”快速开发框架,简化初始搭建与开发,无缝整合 Spring 全生态,内嵌容器、自动配置、起步依赖开箱即用,是 Java 企业级应用与微服务架构的核心基石。
|
24天前
|
人工智能 机器人 API
小龙虾OpenClaw怎么部署?阿里云轻量服务器部署OpenClaw接入飞书保姆级教程
2026年,OpenClaw(原Clawdbot、Moltbot,社区昵称“小龙虾”)凭借本地优先、多通道接入、插件化扩展的特性,成为企业与个人搭建AI自动化助理的首选工具。对于零基础用户而言,**阿里云轻量应用服务器**是部署OpenClaw的最优选择——预置官方应用镜像、无需手动配置复杂环境、成本低且稳定性强,搭配飞书接入后,可实现单聊/群聊指令交互、任务自动执行、消息智能处理等能力。
328 9
|
24天前
|
人工智能 安全 Linux
OpenClaw 本地/阿里云部署与必装4大核心Skill+大模型API全配置手册及问题排查
OpenClaw(社区常称“龙虾”)是一款轻量化、可扩展、本地优先运行的AI代理平台,通过模块化Skill实现安全检测、技能搜索、实时联网、网页自动化等核心能力,形成从安全打底到落地执行的完整工作流,适配办公、学习、开发、日常自动化等多场景。本文基于2026年最新版本,完整讲解OpenClaw四大必装Skill的功能、安装、配置与使用,同时提供本地MacOS、Linux、Windows11及阿里云轻量服务器部署流程,详解阿里云千问大模型API与免费Coding Plan API配置方法,并整理高频问题解决方案,所有命令均可直接复制执行,零基础用户也能快速搭建稳定、安全、高效的私人AI助手系统。
715 12
|
24天前
|
人工智能 安全 BI
OpenClaw(小龙虾)技能生态手册:阿里云/本地系统部署与10大高频Skills技能安装、大模型适配指南
2026年,OpenClaw(社区昵称“小龙虾”)的爆火核心在于其开放的“技能包(Skills)”生态——通过安装不同功能的技能,这个开源AI智能体可从基础对话工具,升级为覆盖办公自动化、开发协作、内容创作、团队协同的全能助手。目前社区已积累数千个技能,但质量参差不齐,新手往往陷入“选择困难”。
564 8

热门文章

最新文章

下一篇
开通oss服务