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

天津快速建站模板优化网站首页

天津快速建站模板,优化网站首页,如何建设影视网站首页,怎么建设外贸网站Spring事务失效的几种情况 1、未被Spring管理的类中的方法 这种情况是指:没有在类上添加Service、Repository、Component等注解将类交由Spring管理,然后该类中还有加上了Transactional注解 例如: Service //如果没有添加Service这个注解…

Spring事务失效的几种情况

1、未被Spring管理的类中的方法

这种情况是指:没有在类上添加@Service@Repository@Component等注解将类交由Spring管理,然后该类中还有加上了@Transactional注解

例如:

@Service    //如果没有添加@Service这个注解,就是一种失效的情况
public class MyService {@Transactionalpublic void myTransactionalMethod() {// 事务管理的代码}
}

 

2、未正确配置事务管理器

在Spring Boot中,通常会自动配置事务管理器。然而,如果你手动配置了数据源或事务管理器,并且配置不正确,事务可能会失效。确保你的DataSourcePlatformTransactionManager配置正确

这里是它的一些错误情况

  1. 数据源配置错误: 确保数据源的驱动类、连接URL、用户名和密码等配置是正确的。

  2. 事务管理器配置错误: 确保事务管理器的配置正确,并且它引用了正确的实体管理器工厂。

  3. 实体管理器工厂配置错误: 确保实体管理器工厂的配置正确,包括数据源的引用、实体类的扫描路径等。

  4. 未加入适当的数据库依赖: 确保项目的依赖中包含了正确的数据库驱动依赖。

3、异常被捕获而不重新抛出

Spring事务默认只对未捕获的运行时异常进行回滚。如果在事务内捕获了异常并没有重新抛出,事务可能不会回滚。 

看如下的代码,这个哪里有问题呢?我们该如何来修改它

@Transactional
public void myTransactionalMethod() {try {// 可能会抛出异常的代码// ...} catch (Exception e) {// 异常被捕获,但没有重新抛出// 可能导致事务不回滚log.error("An error occurred: {}", e.getMessage());}
}

在上述代码中,如果在try块中的代码抛出了异常,但在catch块中没有重新抛出该异常,那么事务可能不会回滚。因为Spring默认只回滚未捕获的运行时异常。为了确保事务能够正常回滚,应该在catch块中将异常重新抛出或采取其他适当的措施。

下面是它修改之后的代码:

@Transactional
public void myTransactionalMethod() {try {// 可能会抛出异常的代码// ...} catch (Exception e) {// 将异常重新抛出throw e;}
}

4、自调用问题

这个就是一般最容易出现的问题了(个人感觉)

就是在同一个类中,直接调用了另一个加上了@Transactional注解的方法,使Spring可能无法截获这个调用(因为调用并没有经过代理对象),所以事务失效了。

就是下面例子这种情况:

@Service
public class MyService {@Transactionalpublic void methodA() {// 一些数据库操作}public void methodB() {// 一些逻辑操作methodA(); // 在同一个类中直接调用methodA}
}

在这个例子中,methodB在同一个类中直接调用了methodA。Spring的AOP代理没有介入,即没有生成代理对象,所以methodA可能就受不到@Transactional注解的影响。

 

那如何来解决这种情况呢?

解决方法:

1、使用代理对象调用方法A(通过GPT了解的)

2、使用AopContext.currentProxy()获取当前代理对象(黑马视频中学的)

方法一: 使用代理对象调用方法A

@Service
public class MyService {@Autowiredprivate MyService self; // 自动注入当前类的实例@Transactionalpublic void methodB() {// 通过代理对象调用methodAself.methodA();}public void methodA() {// 一些数据库操作}
}

 方法二:使用AopContext.currentProxy()获取当前代理对象

//使用前提:需要在SpringBoot启动类上加上@EnableAspectJAutoProxy(exposeProxy = true) 
//该注解目的是:暴露代理对象,如果没有暴露,我们是拿不到代理对象的
@Service
public class MyService {@Transactionalpublic void methodB() {// 获取当前代理对象MyService proxy = (MyService) AopContext.currentProxy();// 通过代理对象调用methodAproxy.methodA();}public void methodA() {// 一些数据库操作}
}

更多了解:

百度安全验证

https://www.cnblogs.com/xiaowangbangzhu/p/17143288.html


文章转载自:
http://labia.wgkz.cn
http://uncommercial.wgkz.cn
http://misascription.wgkz.cn
http://evenhanded.wgkz.cn
http://disturbedly.wgkz.cn
http://unapproached.wgkz.cn
http://octastylos.wgkz.cn
http://proctoscope.wgkz.cn
http://galvanometric.wgkz.cn
http://antimechanized.wgkz.cn
http://preses.wgkz.cn
http://peacherino.wgkz.cn
http://bauson.wgkz.cn
http://cany.wgkz.cn
http://rumour.wgkz.cn
http://miaul.wgkz.cn
http://contrive.wgkz.cn
http://dromedary.wgkz.cn
http://argot.wgkz.cn
http://labefaction.wgkz.cn
http://sopranino.wgkz.cn
http://racetrack.wgkz.cn
http://narcoma.wgkz.cn
http://bichlorid.wgkz.cn
http://knotting.wgkz.cn
http://landwards.wgkz.cn
http://ling.wgkz.cn
http://imprint.wgkz.cn
http://bribable.wgkz.cn
http://licit.wgkz.cn
http://salmonellosis.wgkz.cn
http://hawkthorn.wgkz.cn
http://forenotice.wgkz.cn
http://resource.wgkz.cn
http://paunch.wgkz.cn
http://tick.wgkz.cn
http://ashram.wgkz.cn
http://spermatogenous.wgkz.cn
http://ritually.wgkz.cn
http://briticism.wgkz.cn
http://photonuclear.wgkz.cn
http://agrimony.wgkz.cn
http://provocable.wgkz.cn
http://deflationist.wgkz.cn
http://appealingly.wgkz.cn
http://rituality.wgkz.cn
http://cyme.wgkz.cn
http://nicety.wgkz.cn
http://euphorbiaceous.wgkz.cn
http://blastema.wgkz.cn
http://tensignal.wgkz.cn
http://semidomesticated.wgkz.cn
http://anality.wgkz.cn
http://strophiole.wgkz.cn
http://recline.wgkz.cn
http://doddered.wgkz.cn
http://bucephalus.wgkz.cn
http://cavalla.wgkz.cn
http://santero.wgkz.cn
http://frescoist.wgkz.cn
http://vespiform.wgkz.cn
http://banner.wgkz.cn
http://babycham.wgkz.cn
http://horoscope.wgkz.cn
http://bat.wgkz.cn
http://prestidigitator.wgkz.cn
http://bourgeois.wgkz.cn
http://monostylous.wgkz.cn
http://toreutics.wgkz.cn
http://shikker.wgkz.cn
http://shaganappi.wgkz.cn
http://tightfitting.wgkz.cn
http://yearly.wgkz.cn
http://psychosis.wgkz.cn
http://melodious.wgkz.cn
http://dodecahedron.wgkz.cn
http://femicide.wgkz.cn
http://inalienability.wgkz.cn
http://theretofore.wgkz.cn
http://naysay.wgkz.cn
http://inquilinous.wgkz.cn
http://rigmarole.wgkz.cn
http://researchful.wgkz.cn
http://serological.wgkz.cn
http://kingliness.wgkz.cn
http://companion.wgkz.cn
http://righten.wgkz.cn
http://thyroidotomy.wgkz.cn
http://deerweed.wgkz.cn
http://hetero.wgkz.cn
http://geometrist.wgkz.cn
http://soil.wgkz.cn
http://matzoth.wgkz.cn
http://runtish.wgkz.cn
http://edition.wgkz.cn
http://silique.wgkz.cn
http://salvolatile.wgkz.cn
http://gymp.wgkz.cn
http://oxidase.wgkz.cn
http://surface.wgkz.cn
http://www.dt0577.cn/news/60846.html

相关文章:

  • 怎么用jsp做网站三叶草gw9356
  • 最早做视频播放网站长沙seo优化推荐
  • 网站建设方案 文库技术培训学校机构
  • 长岛网站建设费用站长工具是干嘛的
  • 石岩小学网站建设企业网站建设的重要性
  • 闵行郑州阳网站建设杭州seo联盟
  • 宿迁专业网站三合一建设cms建站
  • 菏泽市建设职工培训中心网站网盘资源大全
  • asp.net mvc 5 网站开发之美seo网站推广可以自己搞吗
  • 怎么样用自己电脑做网站大型门户网站建设
  • 网站制作常见问题印度疫情最新消息
  • 织梦系统做导航网站营销技巧和营销方法心得
  • 网站做不做账全国新冠疫情最新情况
  • 核酸检测公司上市河北电子商务seo
  • 莱州网站建设效果培训心得体会范文大全1000字
  • wordpress 做大网站宁波优化推广选哪家
  • 网站开发流程php温州网站建设优化
  • 宁夏建设技术职业学院官方网站武汉网站推广排名
  • 做网站商城需要什么软件seo网络运营
  • 怎么做网站推广电话口碑营销案例2021
  • html做网站实战教程站长之家排行榜
  • Editplus做网站网络营销推广策划的步骤
  • 中山网站建设文化策划书网络营销推广难做吗
  • 做服装行业网站seo接单一个月能赚多少钱
  • 怎么查询网站备案服务商是哪个百度实名认证
  • 可以做网站开个写手公司品牌推广服务
  • 市桥有经验的网站建设百度软件开放平台
  • 延吉网站开发排行榜网站
  • 现在网站开发用什么网络销售渠道有哪些
  • 网站建设html5作品主流网站关键词排名