news 2026/7/26 9:12:12

Java:Spring/SpringBoot 核心注解全景总结(附极简Demo)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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容器实例化、管理,默认单例

通用业务工具类、公共组件,无专属分层的类

@Componentpublic class CommonUtil {public void printLog() {System.out.println("通用组件工具类");}}

@Service

继承@Component,语义化标识业务逻辑层Bean,功能与@Component一致

Service业务逻辑层类,处理核心业务逻辑

@Servicepublic class UserService {public String getUserInfo() {return "用户业务数据";}}

@Repository

继承@Component,语义化标识数据访问层Bean,可适配数据库异常转换

DAO数据访问层、数据库操作类

@Repositorypublic class UserDao {public void selectUser() {System.out.println("查询用户数据");}}

@Controller

继承@Component,语义化标识控制层Bean,用于接收Web请求

传统Web控制层,页面跳转、请求分发

@Controllerpublic class IndexController {// 页面跳转@RequestMapping("/index")public String index() {return "index.html";}}

@RestController

组合注解(@Controller+@ResponseBody),接口返回JSON数据,无需手动序列化

前后端分离项目,API接口控制层(最常用)

@RestController@RequestMapping("/user")public class UserController {@GetMapping("/info")public String getUser() {return "{\"name\":\"test\"}";}}

@Autowired

自动依赖注入,默认按类型注入Bean,Spring核心注入方式

容器内Bean的依赖自动装配,绝大多数注入场景

@RestControllerpublic class UserController {// 自动注入UserService@Autowiredprivate UserService userService;}

@Qualifier

配合@Autowired使用,解决同类型多Bean冲突,按Bean名称精准注入

一个接口多个实现类,需要指定具体实现类注入的场景

@Autowired@Qualifier("userServiceImpl")private UserService userService;

@Resource

JSR原生注解,默认按名称注入,无名称则按类型,替代@Autowired+@Qualifier

简单注入场景,优先按名称匹配Bean

// 默认按变量名userService匹配Bean@Resourceprivate UserService userService;

@Configuration

标识配置类,替代XML配置文件,类中可通过@Bean注册第三方Bean

自定义配置、注册第三方工具类Bean

@Configurationpublic class AppConfig {// 注册第三方Bean@Beanpublic RestTemplate restTemplate() {return new RestTemplate();}}

@Bean

在配置类中使用,手动注册Bean到Spring容器,可自定义Bean属性

第三方类、无法加@Component的类注册为容器Bean

同上@Configuration Demo

@Scope

指定Bean作用域,默认singleton(单例),支持prototype(多例)等

需要多例Bean、请求级、会话级Bean场景

@Component@Scope("prototype") // 每次获取新建对象public class MultiBean {}

@Lazy

延迟加载Bean,默认容器启动初始化,加注解后首次使用才初始化

重量级Bean、启动耗时较长的组件,优化启动速度

@Lazy@Componentpublic class BigDataUtil {}

二、SpringBoot 核心启动与配置注解

该类注解为SpringBoot专属,实现自动配置、包扫描、项目启动、配置加载等核心能力,是SpringBoot项目的基石。

注解名称

核心作用

适用场景

极简Demo代码

@SpringBootApplication

SpringBoot启动核心组合注解,整合3大注解:1.@Configuration:启动类为配置类2.@EnableAutoConfiguration:自动配置3.@ComponentScan:自动包扫描

项目主启动类,唯一入口

@SpringBootApplicationpublic class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}}

@EnableAutoConfiguration

开启SpringBoot自动配置,根据依赖jar自动装配组件,无需手动配置

自定义启动类、拆分自动配置场景(新版可省略)

@Configuration@EnableAutoConfigurationpublic class StartConfig {}

@ComponentScan

指定包扫描路径,扫描指定包下所有带@Component派生注解的类

项目包结构特殊,需要自定义扫描范围

@SpringBootApplication@ComponentScan(basePackages = "com.demo")public class DemoApplication {}

@PropertySource

加载自定义外部properties配置文件

需要拆分配置文件,加载自定义配置

@Configuration@PropertySource("classpath:custom.properties")public class ConfigLoad {}

@ConfigurationProperties

批量绑定配置文件参数,将yml/properties配置映射到实体类

大批量配置参数统一管理

@Component@ConfigurationProperties(prefix = "user")public class UserConfig {private String name;private Integer age;// getter/setter}

@Value

单个配置参数注入,读取yml/properties配置值

少量零散配置参数注入

@Componentpublic class AppInfo {@Value("${app.version:1.0}")private String version;}

@ConditionalOnClass

条件注解,存在指定类时才初始化当前Bean

自适应配置,依赖第三方组件存在才生效

@Bean@ConditionalOnClass(RestTemplate.class)public RestTemplate restTemplate() {return new RestTemplate();}

三、Web开发核心注解(请求接收与响应)

该类注解用于接口请求映射、参数接收、请求头/请求体解析、跨域配置等Web核心场景。

注解名称

核心作用

适用场景

极简Demo代码

@RequestMapping

通用请求路径映射,支持所有请求方式(GET/POST/PUT/DELETE)

类/方法级别统一请求路径配置

@RestController@RequestMapping("/api")public class ApiController {@RequestMapping("/test")public String test() { return "success"; }}

@GetMapping

仅映射GET请求,Restful风格专用

查询类接口(读数据)

@GetMapping("/get/{id}")public String getById(@PathVariable Integer id) {return "查询ID:"+id;}

@PostMapping

仅映射POST请求,Restful风格专用

新增、提交数据接口(写数据)

@PostMapping("/add")public String add() { return "新增成功"; }

@PutMapping/@DeleteMapping

分别映射PUT(修改)、DELETE(删除)请求

数据修改、删除接口

@PutMapping("/update")public String update() { return "修改成功"; }@DeleteMapping("/del/{id}")public String del(@PathVariable Integer id) { return "删除成功"; }

@PathVariable

获取URL路径中的参数(路径变量)

Restful风格路径传参,如 /user/1001

参考@GetMapping Demo

@RequestParam

获取URL拼接参数(?key=value),可设置默认值、是否必填

普通表单传参、URL查询参数

@GetMapping("/list")public String list(@RequestParam(defaultValue = "1") Integer page) {return "页码:"+page;}

@RequestBody

接收前端JSON格式请求体,自动解析为Java对象

前后端分离,POST/PUT提交JSON数据

@PostMapping("/save")public String save(@RequestBody User user) {return "用户名:"+user.getName();}

@RequestHeader

获取请求头中的指定参数

获取Token、设备信息、请求编码等请求头数据

@GetMapping("/token")public String getToken(@RequestHeader("token") String token) {return "请求令牌:"+token;}

@CrossOrigin

开启跨域支持,解决前端跨域请求报错

前后端分离项目,本地调试跨域

@RestController@CrossOrigin // 类全局跨域public class UserController {}

@ResponseBody

将方法返回值转为JSON响应体,返回数据而非页面

普通@Controller类中部分接口返回JSON数据

@Controllerpublic class DemoController {@ResponseBody@RequestMapping("/json")public String json() { return "data"; }}

四、AOP与事务核心注解

该类注解实现Spring AOP切面编程、数据库事务控制,是业务解耦、数据一致性的核心支撑。

注解名称

核心作用

适用场景

极简Demo代码

@Aspect

标识切面类,开启AOP切面编程能力

日志记录、权限校验、接口耗时统计、限流等通用横切逻辑

@Aspect@Componentpublic class LogAspect {// 切面逻辑}

@Pointcut

定义切入点,指定哪些方法需要被切面拦截

统一配置切面拦截范围

@Pointcut("execution(* com.demo.service.*.*(..))")public void servicePoint() {}

@Before/@After/@Around

前置通知/后置通知/环绕通知,拦截方法前后执行自定义逻辑

方法执行前后日志、参数校验、耗时统计

@Around("servicePoint()")public Object around(ProceedingJoinPoint joinPoint) throws Throwable {long start = System.currentTimeMillis();Object result = joinPoint.proceed();System.out.println("耗时:"+(System.currentTimeMillis()-start));return result;}

@EnableAspectJAutoProxy

开启AOP自动代理,SpringBoot新版可省略(默认开启)

手动开启AOP、自定义代理模式

@Configuration@EnableAspectJAutoProxypublic class AopConfig {}

@Transactional

开启数据库事务,方法执行异常自动回滚,保证数据一致性

新增、修改、删除等数据库操作,需要事务一致性场景

@Servicepublic class OrderService {@Transactional(rollbackFor = Exception.class)public void createOrder() {// 数据库操作,异常自动回滚}}

@EnableTransactionManagement

开启事务管理,SpringBoot新版默认开启,无需手动添加

SSM传统项目手动开启事务

@Configuration@EnableTransactionManagementpublic class TransactionConfig {}

五、常用拓展核心注解

汇总开发中高频使用的拓展注解,涵盖缓存、异步、全局异常、参数校验等场景。

注解名称

核心作用

适用场景

极简Demo代码

@Async

开启方法异步执行,脱离主线程,提升接口响应速度

日志记录、消息推送、文件处理等非实时耗时操作

// 启动类添加@EnableAsync@Asyncpublic void sendMsg() {// 异步执行推送逻辑}

@EnableAsync

开启全局异步支持,配合@Async使用

项目需要异步任务执行场景

@SpringBootApplication@EnableAsyncpublic class DemoApplication {}

@Cacheable

开启方法缓存,查询结果缓存,下次直接读取缓存

高频查询、数据变动少的接口

@Cacheable(value = "userCache", key = "#id")public User getUserById(Integer id) {// 数据库查询逻辑}

@Valid

开启参数校验,配合JSR303注解实现入参自动校验

接口入参非空、长度、格式校验

@PostMapping("/add")public String add(@Valid @RequestBody User user) {return "校验通过";}

@GlobalExceptionHandler/@ExceptionHandler

全局异常捕获,统一处理接口异常,返回规范错误信息

项目全局异常统一处理

@RestControllerAdvicepublic class GlobalException {@ExceptionHandler(Exception.class)public String error(Exception e) {return "系统异常:"+e.getMessage();}}

六、核心注解速记总结

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(异步)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/26 9:12:02

微信DAT文件解密与EXE工具开发:从异或加密到PyInstaller打包实战

1. 项目概述:从DAT到EXE,一次微信数据处理的深度探索最近在技术社区和开发者圈子里,一个话题的讨论热度悄然攀升:如何将微信相关的DAT文件转换为独立的EXE可执行程序。乍一听,你可能会觉得这有点“跨界”——一边是微信…

作者头像 李华
网站建设 2026/7/26 9:10:43

三月七小助手:星穹铁道终极自动化解决方案

三月七小助手:星穹铁道终极自动化解决方案 【免费下载链接】March7thAssistant 崩坏:星穹铁道全自动 三月七小助手 项目地址: https://gitcode.com/gh_mirrors/ma/March7thAssistant 三月七小助手(March7thAssistant)是一款…

作者头像 李华
网站建设 2026/7/26 9:06:36

电力系统智能运维:配电主站日志分析与AI异常检测

1. 项目背景与价值解析在电力系统运维领域,配电主站作为电网调度的核心枢纽,其日志数据如同电力网络的"心电图",记录着设备运行状态、操作指令、异常告警等关键信息。这个数据集的价值在于为AI驱动的智能运维提供了真实场景下的训练…

作者头像 李华
网站建设 2026/7/26 9:05:46

写放大效应WAF:为什么你写入100GB,闪存却承受了300GB的磨损?

摘要:写放大(Write Amplification Factor, WAF)是衡量SSD效率的"隐形指标"——用户只写入了100GB数据,NAND闪存实际可能承受了200GB甚至500GB的写入磨损。WAF直接决定了SSD的实际寿命和性能表现。本文从WAF的定义、产生…

作者头像 李华
网站建设 2026/7/26 9:05:39

OpenAI自建数据中心:AI算力基础设施的技术变革与开发者影响

OpenAI 要自建数据中心了,而且一出手就是 200 亿美元。这消息听起来像是科技巨头又一轮军备竞赛,但如果你只把它看作一次“基建扩张”,可能就错过了背后的关键信号。 为什么一家以模型和算法为核心竞争力的公司,要投入如此巨大的…

作者头像 李华
网站建设 2026/7/26 9:04:57

量子思维在AI提示优化中的突破与应用

1. 从提示优化困境到量子思维的跨越上周三凌晨两点,我盯着屏幕上第37次失败的AI生成结果,突然意识到一个残酷事实:我们这些所谓的"提示词工程师"可能正在用工业时代的方法解决量子尺度的问题。就像试图用牛顿力学解释电子跃迁&…

作者头像 李华