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

一流的福州网站建设二级域名免费分发

一流的福州网站建设,二级域名免费分发,网站收藏链接怎么做,ctf wordpress在日常工作中,经常使用Transactional 注解进行事务的声明,但如果发现事务未生效,可以从下面几个方面进行排查。 常见失效场景总结 场景原因解决方案内部方法调用绕过了Spring代理注入自身或使用AopContextprivate方法AOP无法增强改为public方…

在日常工作中,经常使用@Transactional 注解进行事务的声明,但如果发现事务未生效,可以从下面几个方面进行排查。


常见失效场景总结

场景原因解决方案
内部方法调用绕过了Spring代理注入自身或使用AopContext
private方法AOP无法增强改为public方法
final方法/类无法被代理移除final修饰符
非Spring管理不是代理对象确保Bean由Spring管理
异常被捕获异常未抛出到代理层检查异常处理逻辑
数据库不支持如MyISAM引擎使用InnoDB等支持事务的引擎

1、配置事务管理器

在服务的启动类,需要配置@EnableTransactionManagement,核心作用是启用Spring的声明式事务管理功能

在Spring Boot中,通常不需要显式添加@EnableTransactionManagement;但如果exclude = {DataSourceAutoConfiguration.class}排除了DataSource自动配置,则需要显式声明

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) // 排除是由于项目需要,需要声明多数据源
@EnableTransactionManagement  // 激活事务管理
public class Application {// 启用后,Spring会为带有@Transactional的Bean创建代理
}

或者可以使用XML配置方式配置

<tx:annotation-driven transaction-manager="transactionManager"/>

2、代理机制生效

// ❌ 错误:内部方法调用,事务不生效
@Service
public class UserService {@Transactionalpublic void methodA() {// 直接调用内部方法,事务失效this.methodB();}@Transactionalpublic void methodB() {// 事务不会生效}
}// ✅ 正确:通过Spring代理调用
@Service
public class UserService {@Autowiredprivate UserService self; // 注入自己或通过ApplicationContext获取@Transactionalpublic void methodA() {// 通过代理调用,事务生效self.methodB();}@Transactionalpublic void methodB() {// 事务生效}
}

3、异常类型匹配

@Transactional(rollbackFor = Exception.class)
public String createTask(ModelTaskDTO modelTaskDTO) throws TException, InterruptedException {// 所有异常都会回滚
}// 默认情况只回滚RuntimeException和Error
@Transactional // 只回滚RuntimeException
public void defaultRollback() {throw new IOException(); // 不会回滚
}

4、方法修饰符要求

public class ModelTrainingServiceImpl {// ✅ 正确:public方法@Transactionalpublic String createTask() {// 事务生效}// ❌ 错误:private方法事务不生效@Transactionalprivate void privateMethod() {// 事务不生效}// ❌ 错误:final方法无法被代理@Transactionalpublic final void finalMethod() {// 事务不生效}
}

5、Bean必须由Spring管理

// ✅ 正确:Spring管理的Bean
@Service
public class ModelTrainingServiceImpl {@Transactionalpublic void method() {// 事务生效}
}// ❌ 错误:手动new的对象
ModelTrainingServiceImpl service = new ModelTrainingServiceImpl();
service.method(); // 事务不生效

6、数据库支持事务

  • 使用支持事务的数据库引擎(如MySQL的InnoDB)

  • 正确配置数据源和连接

7、事务传播行为

@Service
public class YourService {@Transactional(propagation = Propagation.REQUIRED)public void method1() {// 默认传播行为}@Transactional(propagation = Propagation.REQUIRES_NEW)public void method2() {// 总是开启新事务}
}
http://www.dtcms.com/wzjs/133700.html

相关文章:

  • 学做面包网站企业培训机构哪家最好
  • 网站防封链接怎么做子域名网址查询
  • 自己做的网站如何上传中国最近新闻大事件
  • 苏宁网站建设上海快速排名优化
  • 网站建设属于什么职能优化网络软件
  • 可以做英文纵横字谜的网站免费模板网站
  • 做网站jsp好还是百度收录查询方法
  • 全国企业信用信息平台建网站seo
  • 网站建设策划稿seo排名赚钱
  • 手机网站关键词排名查询广州网站运营专注乐云seo
  • 连云港网站优化杭州网站seo推广软件
  • 南阳市做网站黄页88网官网
  • 怎么免费做网站不要域名全球疫情最新消息
  • 网站js幻灯片代码公司网页网站建设
  • 个人网站备案 费用郑州网站网页设计
  • 营销型网站设计网站推客平台
  • 电商网站建设心得百度搜索指数排行
  • 社交网站建设流程北京网站优化页面
  • 网站建设只有一个空间吗百度推广代理商赚钱吗
  • 近期国际热点大事件站长工具seo排名查询
  • 烟台公司建网站百度开发者平台
  • 官方网站welcome汽车网络营销推广方案
  • 网站做视频好不好室内设计培训班学费一般多少
  • win7 iis 网站网站流量查询网站统计查询
  • 安吉哪里做网站好产品营销方案
  • 临沂做网站建设的公司下载百度免费
  • 重庆建站塔山双喜易观数据
  • 企业管理咨询行业很乱谷歌搜索优化seo
  • 建设网站需要些什么手续一手app推广接单平台
  • 北京网站建设网网站诊断分析