Java:Spring/SpringBoot 核心注解全景总结(附极简Demo)
本文汇总Spring 核心基础注解、SpringBoot 专属注解、Web开发注解、事务&AOP注解、配置&属性绑定注解五大类高频核心注解,采用「注解名称+核心作用+适用场景+极简可运行Demo」表格全景呈现,覆盖日常开发99%常用场景,适合收藏备查。
前置说明:所有Demo均为极简代码,可直接在SpringBoot项目中运行,无需额外复杂配置,默认基于SpringBoot 2.x/3.x通用规范。
一、Spring 核心IOC容器注解(Bean注册与依赖注入)
该类注解核心作用:将对象交给Spring容器管理,实现Bean的创建、注册、依赖注入,是Spring最基础核心能力。
注解名称 | 核心作用 | 适用场景 | 极简Demo代码 |
|---|---|---|---|
@Component | 通用Bean注册注解,将普通类交给Spring容器实例化、管理,默认单例 | 通用业务工具类、公共组件,无专属分层的类 |
|
@Service | 继承@Component,语义化标识业务逻辑层Bean,功能与@Component一致 | Service业务逻辑层类,处理核心业务逻辑 |
|
@Repository | 继承@Component,语义化标识数据访问层Bean,可适配数据库异常转换 | DAO数据访问层、数据库操作类 |
|
@Controller | 继承@Component,语义化标识控制层Bean,用于接收Web请求 | 传统Web控制层,页面跳转、请求分发 |
|
@RestController | 组合注解(@Controller+@ResponseBody),接口返回JSON数据,无需手动序列化 | 前后端分离项目,API接口控制层(最常用) |
|
@Autowired | 自动依赖注入,默认按类型注入Bean,Spring核心注入方式 | 容器内Bean的依赖自动装配,绝大多数注入场景 |
|
@Qualifier | 配合@Autowired使用,解决同类型多Bean冲突,按Bean名称精准注入 | 一个接口多个实现类,需要指定具体实现类注入的场景 |
|
@Resource | JSR原生注解,默认按名称注入,无名称则按类型,替代@Autowired+@Qualifier | 简单注入场景,优先按名称匹配Bean |
|
@Configuration | 标识配置类,替代XML配置文件,类中可通过@Bean注册第三方Bean | 自定义配置、注册第三方工具类Bean |
|
@Bean | 在配置类中使用,手动注册Bean到Spring容器,可自定义Bean属性 | 第三方类、无法加@Component的类注册为容器Bean | 同上@Configuration Demo |
@Scope | 指定Bean作用域,默认singleton(单例),支持prototype(多例)等 | 需要多例Bean、请求级、会话级Bean场景 |
|
@Lazy | 延迟加载Bean,默认容器启动初始化,加注解后首次使用才初始化 | 重量级Bean、启动耗时较长的组件,优化启动速度 |
|
二、SpringBoot 核心启动与配置注解
该类注解为SpringBoot专属,实现自动配置、包扫描、项目启动、配置加载等核心能力,是SpringBoot项目的基石。
注解名称 | 核心作用 | 适用场景 | 极简Demo代码 |
|---|---|---|---|
@SpringBootApplication | SpringBoot启动核心组合注解,整合3大注解:1.@Configuration:启动类为配置类2.@EnableAutoConfiguration:自动配置3.@ComponentScan:自动包扫描 | 项目主启动类,唯一入口 |
|
@EnableAutoConfiguration | 开启SpringBoot自动配置,根据依赖jar自动装配组件,无需手动配置 | 自定义启动类、拆分自动配置场景(新版可省略) |
|
@ComponentScan | 指定包扫描路径,扫描指定包下所有带@Component派生注解的类 | 项目包结构特殊,需要自定义扫描范围 |
|
@PropertySource | 加载自定义外部properties配置文件 | 需要拆分配置文件,加载自定义配置 |
|
@ConfigurationProperties | 批量绑定配置文件参数,将yml/properties配置映射到实体类 | 大批量配置参数统一管理 |
|
@Value | 单个配置参数注入,读取yml/properties配置值 | 少量零散配置参数注入 |
|
@ConditionalOnClass | 条件注解,存在指定类时才初始化当前Bean | 自适应配置,依赖第三方组件存在才生效 |
|
三、Web开发核心注解(请求接收与响应)
该类注解用于接口请求映射、参数接收、请求头/请求体解析、跨域配置等Web核心场景。
注解名称 | 核心作用 | 适用场景 | 极简Demo代码 |
|---|---|---|---|
@RequestMapping | 通用请求路径映射,支持所有请求方式(GET/POST/PUT/DELETE) | 类/方法级别统一请求路径配置 |
|
@GetMapping | 仅映射GET请求,Restful风格专用 | 查询类接口(读数据) |
|
@PostMapping | 仅映射POST请求,Restful风格专用 | 新增、提交数据接口(写数据) |
|
@PutMapping/@DeleteMapping | 分别映射PUT(修改)、DELETE(删除)请求 | 数据修改、删除接口 |
|
@PathVariable | 获取URL路径中的参数(路径变量) | Restful风格路径传参,如 /user/1001 | 参考@GetMapping Demo |
@RequestParam | 获取URL拼接参数(?key=value),可设置默认值、是否必填 | 普通表单传参、URL查询参数 |
|
@RequestBody | 接收前端JSON格式请求体,自动解析为Java对象 | 前后端分离,POST/PUT提交JSON数据 |
|
@RequestHeader | 获取请求头中的指定参数 | 获取Token、设备信息、请求编码等请求头数据 |
|
@CrossOrigin | 开启跨域支持,解决前端跨域请求报错 | 前后端分离项目,本地调试跨域 |
|
@ResponseBody | 将方法返回值转为JSON响应体,返回数据而非页面 | 普通@Controller类中部分接口返回JSON数据 |
|
四、AOP与事务核心注解
该类注解实现Spring AOP切面编程、数据库事务控制,是业务解耦、数据一致性的核心支撑。
注解名称 | 核心作用 | 适用场景 | 极简Demo代码 |
|---|---|---|---|
@Aspect | 标识切面类,开启AOP切面编程能力 | 日志记录、权限校验、接口耗时统计、限流等通用横切逻辑 |
|
@Pointcut | 定义切入点,指定哪些方法需要被切面拦截 | 统一配置切面拦截范围 |
|
@Before/@After/@Around | 前置通知/后置通知/环绕通知,拦截方法前后执行自定义逻辑 | 方法执行前后日志、参数校验、耗时统计 |
|
@EnableAspectJAutoProxy | 开启AOP自动代理,SpringBoot新版可省略(默认开启) | 手动开启AOP、自定义代理模式 |
|
@Transactional | 开启数据库事务,方法执行异常自动回滚,保证数据一致性 | 新增、修改、删除等数据库操作,需要事务一致性场景 |
|
@EnableTransactionManagement | 开启事务管理,SpringBoot新版默认开启,无需手动添加 | SSM传统项目手动开启事务 |
|
五、常用拓展核心注解
汇总开发中高频使用的拓展注解,涵盖缓存、异步、全局异常、参数校验等场景。
注解名称 | 核心作用 | 适用场景 | 极简Demo代码 |
|---|---|---|---|
@Async | 开启方法异步执行,脱离主线程,提升接口响应速度 | 日志记录、消息推送、文件处理等非实时耗时操作 |
|
@EnableAsync | 开启全局异步支持,配合@Async使用 | 项目需要异步任务执行场景 |
|
@Cacheable | 开启方法缓存,查询结果缓存,下次直接读取缓存 | 高频查询、数据变动少的接口 |
|
@Valid | 开启参数校验,配合JSR303注解实现入参自动校验 | 接口入参非空、长度、格式校验 |
|
@GlobalExceptionHandler/@ExceptionHandler | 全局异常捕获,统一处理接口异常,返回规范错误信息 | 项目全局异常统一处理 |
|
六、核心注解速记总结
1.Bean注册四件套:@Component、@Service、@Repository、@Controller(语义分层,功能一致)
2.依赖注入三剑客:@Autowired(按类型)、@Qualifier(按名称)、@Resource(自适应)
3.SpringBoot核心:@SpringBootApplication(一站式启动)、@Configuration+@Bean(手动注册Bean)
4.Web接口核心:@RestController + @GetMapping/@PostMapping + @RequestBody/@PathVariable
5.业务核心:@Transactional(事务)、@Aspect(切面)、@Async(异步)
