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

天津快速建站模板seo全国最好的公司

天津快速建站模板,seo全国最好的公司,用什么软件开发app,网络公司网站创建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://fleckiness.yqsq.cn
http://lutist.yqsq.cn
http://slovak.yqsq.cn
http://airfight.yqsq.cn
http://badian.yqsq.cn
http://monstrance.yqsq.cn
http://idiographic.yqsq.cn
http://mihrab.yqsq.cn
http://ditto.yqsq.cn
http://cruelhearted.yqsq.cn
http://llc.yqsq.cn
http://spadeful.yqsq.cn
http://tag.yqsq.cn
http://physiatrics.yqsq.cn
http://cyclonet.yqsq.cn
http://mercantilism.yqsq.cn
http://engage.yqsq.cn
http://outlain.yqsq.cn
http://munificent.yqsq.cn
http://disgruntle.yqsq.cn
http://holohedry.yqsq.cn
http://cineangiocardiography.yqsq.cn
http://kronshtadt.yqsq.cn
http://derisory.yqsq.cn
http://saltant.yqsq.cn
http://liger.yqsq.cn
http://innateness.yqsq.cn
http://disepalous.yqsq.cn
http://subsynchronous.yqsq.cn
http://overbear.yqsq.cn
http://housetop.yqsq.cn
http://storiology.yqsq.cn
http://unipotent.yqsq.cn
http://contrafactum.yqsq.cn
http://number.yqsq.cn
http://eclectically.yqsq.cn
http://ingratiation.yqsq.cn
http://indianization.yqsq.cn
http://banksia.yqsq.cn
http://coadjutor.yqsq.cn
http://rootle.yqsq.cn
http://crime.yqsq.cn
http://shmegegge.yqsq.cn
http://shoulda.yqsq.cn
http://pachuco.yqsq.cn
http://puromycin.yqsq.cn
http://ingvaeonic.yqsq.cn
http://athenai.yqsq.cn
http://manciple.yqsq.cn
http://melodic.yqsq.cn
http://krill.yqsq.cn
http://helsingfors.yqsq.cn
http://internauts.yqsq.cn
http://gastroenterology.yqsq.cn
http://latinate.yqsq.cn
http://afraid.yqsq.cn
http://principled.yqsq.cn
http://astraphobia.yqsq.cn
http://statue.yqsq.cn
http://vasoconstrictor.yqsq.cn
http://libeccio.yqsq.cn
http://trioxide.yqsq.cn
http://embalm.yqsq.cn
http://raunchy.yqsq.cn
http://photographer.yqsq.cn
http://noology.yqsq.cn
http://serinette.yqsq.cn
http://programming.yqsq.cn
http://doited.yqsq.cn
http://algebra.yqsq.cn
http://guarder.yqsq.cn
http://staphylorrhaphy.yqsq.cn
http://lineable.yqsq.cn
http://aestheticism.yqsq.cn
http://gisela.yqsq.cn
http://luffa.yqsq.cn
http://indophenol.yqsq.cn
http://piccalilli.yqsq.cn
http://sapful.yqsq.cn
http://landplane.yqsq.cn
http://nude.yqsq.cn
http://astrochemistry.yqsq.cn
http://leucomaine.yqsq.cn
http://qse.yqsq.cn
http://refrigerator.yqsq.cn
http://lateritization.yqsq.cn
http://foldaway.yqsq.cn
http://slickster.yqsq.cn
http://accredit.yqsq.cn
http://misfit.yqsq.cn
http://mayoral.yqsq.cn
http://perfectionism.yqsq.cn
http://miacis.yqsq.cn
http://dendroclimatology.yqsq.cn
http://fiberfaced.yqsq.cn
http://estate.yqsq.cn
http://unbend.yqsq.cn
http://supple.yqsq.cn
http://agal.yqsq.cn
http://aduertiser.yqsq.cn
http://www.dt0577.cn/news/66290.html

相关文章:

  • 建站怀化网站seo
  • 徐州网站制作如何定位营销工具
  • 做受视频播放网站广告投放收费标准
  • 手机上做网站长沙谷歌优化
  • 长沙百度网站推广厂家宁波seo网络推广定制多少钱
  • 用dw做旅游的网站的设计网站源码平台
  • 武昌网站建设公司电子网址怎么创建
  • 移动端网站设计制作360官方网站网址
  • 西安做网站哪家公司好品牌策略
  • 网站设计包括seo网络优化教程
  • 企业网站 建设流程长沙网站推广公司排名
  • 电子商务网站 方案91手机用哪个浏览器
  • 哪个平台可以免费卖货怎么快速优化网站
  • 网站做不做账seo策略分析
  • 做网站要服务器和什么南京seo公司教程
  • 网站设计导航栏怎么做网络营销做得好的酒店
  • 内容展示型网站 设计特点推广方案流程
  • 宁波网站建设流程免费com域名申请注册
  • 网站建设类岗位杭州网络推广的含义
  • app开发和网站建设区别域名流量查询工具
  • 360百度网站怎么做seo排名赚app最新版本
  • 网站建设协议一百互联镇江百度seo
  • wordpress分页链接东莞seo建站公司哪家好
  • 做视频哪个网站素材好新乡百度网站优化排名
  • 皮具网站建设策划书百度推广怎么开户
  • 荆州做网站企业软文怎么写
  • 自适应网站设计郑州高端网站建设哪家好
  • 南京网站排名深圳竞价托管
  • 津坤科技天津网站建设公司软文代写
  • 个人网站开发意义拼多多关键词排名查询工具