品牌型号:联想拯救者R7000
系统:Windows 10专业版
软件版本:Spring Boot 4.0.2
我们在做Java企业级项目开发中,经常需要做事务处理,例如开发电商订单支付功能时,“扣减商品库存”和“更新订单状态”两个操作必须同时成功或同时失败,否则会出现库存扣减和订单不匹配的情况。借助Spring框架,我们无需手动编写事务相关代码,只需在业务方法上添加@Transactional注解,就能实现事务控制。本文将为大家介绍Spring框架中@Transactional注解的底层原理,Spring框架的注解有哪些的相关内容。
一、Spring框架中@Transactional注解的底层原理
@Transactional注解的作用是实现事务管理,其底层核心依赖AOP(面向切面编程)和事务管理器(PlatformTransactionManager),不需要我们手动编写事务开启、提交、回滚的代码,即可实现事务的原子性、一致性、隔离性和持久性。

第一步:Bean扫描与代理创建
Spring容器启动时,会扫描所有带有@Transactional的类或方法,如果这个类实现了接口,默认使用JDK动态代理,否则使用CGLIB动态代理,生成代理对象拦截目标方法调用。
第二步:事务拦截器触发
代理对象调用目标方法时,会先触发事务拦截器(TransactionInterceptor),该拦截器的原理是AOP,负责整个事务的全流程。
第三步:事务的开启与执行
拦截器会先获取@Transactional注解的属性,再通过事务管理器获取数据库连接,设置连接为手动提交,并通过ThreadLocal将连接绑定到当前线程,随后执行业务逻辑。
第四步:事务的提交与回滚
在业务逻辑正常时,会提交该事务,如果抛出异常,会回滚事务。注意异常类型需要【RuntimeException】或者其子类。

二、Spring框架的注解有哪些
Spring框架的注解非常多,包括Bean定义、Web开发等多个场景,下面我就简单为大家介绍一下Spring框架的常用注解,主要是Web开发的常用注解,掌握这些注解可满足日常Web接口开发的核心需求。
1、Bean定义与组件扫描注解
@Component是最通用的组件注解,表示这是一个受Spring管理的Bean,@Configuration表示该类为配置类,配合@Bean注解可手动定义Bean。例如下图所示,配置Spring Batch的配置类,用Bean注解定义Reader。

2、Web开发相关注解
@RestController是组合注解,相当于@Controller+@ResponseBody,用于开发RESTful API,直接返回JSON数据。@RequestMapping用于映射HTTP请求(如GET、POST),指定请求路径。@GetMapping、@PostMapping是@RequestMapping的简化形式,分别对应GET、POST请求。@PathVariable用于获取URL路径中的参数,@RequestParam用于获取请求参数。

三、总结
以上就是Spring框架中@Transactional注解的底层原理,Spring框架的注解有哪些的相关内容。本文为大家介绍了@Transactional事务注解的底层原理,核心在于AOP和动态代理,在使用该注解时,要注意注解事务失效的场景,防止注解失效。除此之外还为大家介绍了常用的Spring框架注解,希望对你有所帮助。