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

网站的制作过程建设网站的企业邮箱

网站的制作过程,建设网站的企业邮箱,品牌关键词优化,网站大致内容文章目录 1. 自调用#xff08;内部调用#xff09;导致事务失效示例#xff1a;解决办法#xff1a; 2. 事务方法不是 public 修饰示例#xff1a;解决办法#xff1a; 3. 未被 Spring 管理的对象示例#xff1a;解决办法#xff1a; 4. 异常类型不匹配导致事务回滚失… 文章目录 1. 自调用内部调用导致事务失效示例解决办法 2. 事务方法不是 public 修饰示例解决办法 3. 未被 Spring 管理的对象示例解决办法 4. 异常类型不匹配导致事务回滚失败示例解决办法 5. 传播类型使用不当示例解决办法 6. 数据库本身不支持事务解决办法 7. 使用了不支持事务的操作解决办法 8. 事务管理器未正确配置解决办法 9. 代理模式下的事务不生效解决办法 总结 在 Spring 中事务传播机制可以有效管理事务的传播和行为。但在某些情况下事务传播可能会失效导致事务没有按预期进行传播和处理。以下是常见导致事务传播失效的几种情况 1. 自调用内部调用导致事务失效 这是最常见的问题之一。当一个类的非事务方法内部调用自身的事务方法时Spring 的事务代理无法起作用。这是因为 Spring 的事务管理是基于 AOP 实现的它通过动态代理在方法执行前后插入事务逻辑。但如果是同一个类的内部调用Spring 无法通过代理拦截这个调用事务不会被启动。 示例 public class MyService {Transactionalpublic void transactionalMethod() {// 事务逻辑}public void nonTransactionalMethod() {// 通过内部调用执行事务方法transactionalMethod();} }在上述代码中如果在 nonTransactionalMethod() 中调用了 transactionalMethod()transactionalMethod() 中的事务不会生效因为这是一个自调用不经过 Spring 的代理机制。 解决办法 将事务方法抽取到另一个类中或者通过依赖注入的方式调用。 Service public class MyService {Autowiredprivate MyService self;public void nonTransactionalMethod() {// 使用 self 调用事务才能生效self.transactionalMethod();}Transactionalpublic void transactionalMethod() {// 事务逻辑} }2. 事务方法不是 public 修饰 Spring 的事务管理是基于代理的它只会对 public 方法进行代理。对于 private、protected、或者 package-private 的方法Spring 事务不会生效因为代理类无法拦截对这些方法的调用。 示例 Transactional private void transactionalMethod() {// 事务逻辑 }在这种情况下事务不会生效因为 transactionalMethod() 不是 public 方法。 解决办法 确保事务方法是 public 的。 Transactional public void transactionalMethod() {// 事务逻辑 }3. 未被 Spring 管理的对象 只有被 Spring 容器管理的 Bean事务代理才能起作用。如果方法是在一个非 Spring 管理的类中调用的即使添加了 Transactional 注解事务也不会生效。 示例 public class ExternalClass {Transactionalpublic void transactionalMethod() {// 事务逻辑} }如果 ExternalClass 不是由 Spring 容器托管transactionalMethod() 上的事务将不起作用。 解决办法 确保事务相关的 Bean 是通过 Spring 管理的即确保它们是由 Spring 容器注入的例如通过 Service 或 Component 标注的类。 4. 异常类型不匹配导致事务回滚失败 Spring 的默认事务管理策略是只在遇到 unchecked 异常RuntimeException 或 Error 时回滚事务。如果方法抛出了一个 checked 异常如 IOException事务不会回滚。 示例 Transactional public void transactionalMethod() throws Exception {// 如果抛出 checked 异常事务不会回滚throw new Exception(Checked Exception); }在上述示例中方法抛出的是一个 Exceptionchecked 异常默认情况下Spring 不会回滚事务。 解决办法 可以通过 rollbackFor 属性明确指定哪些异常需要触发事务回滚 Transactional(rollbackFor Exception.class) public void transactionalMethod() throws Exception {// 事务会回滚throw new Exception(Checked Exception); }5. 传播类型使用不当 事务传播类型决定了当一个事务方法调用另一个事务方法时事务如何传播。如果传播类型配置不当可能导致事务行为与预期不一致甚至事务失效。 示例 使用 Propagation.NOT_SUPPORTED 或 Propagation.REQUIRES_NEW 传播类型时如果子事务方法被配置为不支持或需要新的事务可能会导致当前事务的逻辑与原始事务隔离无法实现事务传播效果。 Transactional(propagation Propagation.NOT_SUPPORTED) public void nonTransactionalMethod() {// 该方法不会加入现有事务事务逻辑不会生效 }解决办法 根据业务需求选择正确的传播类型例如使用 Propagation.REQUIRED 让子方法加入当前事务。 6. 数据库本身不支持事务 并非所有数据库都支持事务操作。比如某些 NoSQL 数据库如 MongoDB、Cassandra对事务的支持是有限的。如果数据库不支持事务即使在代码中配置了事务管理事务也不会生效。 解决办法 确保所使用的数据库支持事务并正确配置数据库连接。 7. 使用了不支持事务的操作 某些数据库操作或框架方法不支持事务。比如批量操作或者直接使用 JdbcTemplate 进行大批量数据插入时可能不会受到事务控制的影响。 解决办法 确保使用支持事务管理的数据库操作工具如 JPA、Hibernate或者正确配置 JdbcTemplate。 8. 事务管理器未正确配置 Spring 事务管理依赖于 PlatformTransactionManager如果没有正确配置事务管理器事务也不会生效。常见问题包括未正确配置数据源或没有配置事务管理器。 解决办法 确保 PlatformTransactionManager 正确配置并且事务管理器与数据源绑定一致。 Bean public PlatformTransactionManager transactionManager(DataSource dataSource) {return new DataSourceTransactionManager(dataSource); }9. 代理模式下的事务不生效 Spring 使用动态代理JDK 动态代理或 CGLIB来实现 AOP。如果使用了 JDK 动态代理它只对接口的方法进行代理导致如果在实现类上直接调用方法事务可能不生效。 解决办法 如果没有接口确保 Transactional 注解的类使用的是 CGLIB 代理而不是 JDK 代理。 EnableTransactionManagement(proxyTargetClass true) // 强制使用 CGLIB 代理总结 事务失效的原因主要包括自调用、方法访问权限、异常处理不当、传播类型选择错误等。在实际开发中务必确保事务方法正确配置并且在调用方法时遵循 Spring AOP 的代理机制避免事务失效。
http://www.pierceye.com/news/856103/

相关文章:

  • 烟台软件优化网站敦煌网站建设
  • wordpress防抓取wordpress seo h1标签
  • 产品宣传网站模板完整个人网站html
  • 多用户商城网站开发seo搜索是什么
  • 永川网站制作网页设计中好的网站
  • 淮南本地网从化网站建设优化
  • 必要是什么网站山东网站seo
  • 汕头网站快速优化排名wordpress安装流程图
  • 郑州视频网站建设大概多少钱赶集网2022年最新招聘
  • 购物网站怎么做优化wordpress 暖岛 主题
  • 帝国cms如何做电影网站广告设计要学哪些软件
  • 企业做网站的意义网站建设的知识
  • 重庆荣昌网站建设价格内网网站建设流程
  • 专业网站建设哪家好网站开发英语英语
  • 亿恩 网站备案做养生网站需要什么资质
  • 镇江网站建设案例洛阳网站建站
  • 网站建设如何把代码沈阳网站制作
  • 微网站自己怎么做的模版网站和语言网站
  • 做平台是做网站和微信小程序的好别京津冀协同发展国家战略
  • 北京怎样做企业网站电脑网页开发
  • 企业网站建设运营方案Wordpress hover插件
  • 做暧暖ox免费网站微信开店小程序怎么弄
  • 网站建站网站网站维护动画设计属于什么大类
  • 深圳宝安上市公司网站建设报价制作网站去哪家好
  • 沈阳做网站客户多吗网站地图抓取
  • 做网站比较专业的公司微信商城在哪里找
  • 网站建设开发的流程网站标题title怎么写
  • 网络营销的优势海宁网站怎么做seo
  • wordpress 英文主题南宁网站排名优化公司
  • 行业网站建设方案有专门做电商网站的CMS吗