当前位置: 首页 > wzjs >正文

静态网站源文件下载鞍山人才网档案查询

静态网站源文件下载,鞍山人才网档案查询,长沙做网站的公司,太原小程序商城这是一个非常常见的关于 Spring 事务传播机制 的问题,核心问题是: 在同一个类中,方法 A 调用方法 B,而方法 B 上有 Transactional 注解。当调用方法 A 时,如果发生异常,方法 B 的事务会生效吗? …

这是一个非常常见的关于 Spring 事务传播机制 的问题,核心问题是:

在同一个类中,方法 A 调用方法 B,而方法 B 上有 @Transactional 注解。当调用方法 A 时,如果发生异常,方法 B 的事务会生效吗?


✅ 简短回答:

 

📌 示例代码说明

@Service
public class MyService {public void methodA() {// 做一些操作methodB();  // 内部调用methodB}@Transactionalpublic void methodB() {// 数据库操作}
}

❗️问题:

  •  

🤔 为什么事务不生效?

因为 Spring 的事务是通过 动态代理(JDK Proxy 或 CGLIB) 实现的:

  •  

✅ 如何解决这个问题?

✅ 方案一:将方法拆分到不同的类中

把 methodB() 放到另一个 Service 类中:

@Service
public class MyService {@Autowiredprivate AnotherService anotherService;public void methodA() {// 做一些操作anotherService.methodB();  // 外部调用}
}@Service
public class AnotherService {@Transactionalpublic void methodB() {// 数据库操作}
}

✅ 这样事务就会生效了。


✅ 方案二:通过 AopContext.currentProxy() 获取代理对象(慎用)

你可以通过以下方式获取当前类的代理对象来调用 methodB()

@Service
public class MyService implements ApplicationContextAware {private static ApplicationContext applicationContext;@Transactionalpublic void methodB() {// 数据库操作}public void methodA() {// 获取当前类的代理对象MyService proxy = (MyService) AopContext.currentProxy();proxy.methodB();  // 使用代理调用}@Overridepublic void setApplicationContext(ApplicationContext ctx) {applicationContext = ctx;}
}

⚠️ 注意事项:

  •  

🔁 补充:事务传播行为(Propagation Behavior)

如果你希望方法B的行为能被方法A控制,可以指定事务传播行为,例如:

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodB() {// 总是开启一个新事务
}

 

✅ 总结

场景事务是否生效说明
同一类内调用带 @Transactional 的方法❌ 不生效Spring 无法拦截内部方法调用
不同类之间调用带 @Transactional 的方法✅ 生效通过代理对象调用,事务生效
使用 AopContext.currentProxy() 调用✅ 可以生效需要设置 expose-proxy=true

 

http://www.dtcms.com/wzjs/571545.html

相关文章:

  • 佛山企业网站建设平台easywechat wordpress
  • 一份完整的网站策划书我的世界建筑网站
  • 在Vs中做网站接口wordpress app 开发
  • 站长工具域名查询如何更改wordpress后台地址
  • 现代网站开发技术开元酒店集团品牌建设
  • 萝岗微网站建设主题商店网站设计
  • 江阴市网站建设网站建设作用
  • wordpress建站小百科站内优化
  • wordpress搭建下载站网络策划书范文
  • 台州卓远做网站好不好海外推广引流
  • 保定曲阳网站建设phpcms做双语网站
  • 武隆网站建设联系电话seo好seo
  • 全屏网站制作网站备案 人在上海
  • 浙江省省建设厅网站山西 网站制作
  • 网站投放广告多少钱中国建设银行网站分析
  • 制作公司网站需要购买域名和服务器吗化妆品首页设计
  • 淄博网站制作网络定制租木模板多少钱一平方
  • 在阿里巴巴网站上怎么做贸易WordPress富媒体说说
  • 南京做网站优化的公司网页电子书在线阅读器wordpress
  • 石家庄网站托管公司宿州大型网站建设公司
  • 做药品网站有哪些内容做ui要上那些网站
  • 网站的风格有哪些他达拉非是什么
  • 网站和新媒体建设管理长沙网页设计哪个公司好
  • 已经有了域名和服务器怎么做网站logo123设计网
  • 沈阳市做网站电话网站ftp用户名和密码
  • 厦门网站建设哪家不错推荐wordpress改地址错误
  • 做军事网站的项目背景吉林做网站多少钱
  • 服装微信商城网站建设杭州网站建设响应式
  • 建设银行网站打不开别的网站可以四川工程造价信息网
  • 广州网站建设免费邯郸启涵电子商务有限公司