导航:首页 > 编程语言 > java注解事务

java注解事务

发布时间:2022-05-17 18:05:52

java中 spring 的事务问题

最近在项目的时候碰到pring事务不起作用的情况,后来解决了,这里我汇总下:

1、首先使用如下代码 确认你的bean 是代理对象吗?
必须是Spring定义(通过XML或注解定义都可以)的Bean才接受事务。
直接new出来的对象添加事务是不起作用的。
可以通过以下方式判断是否是代理对象:

AopUtils.isAopProxy(Object object)
AopUtils.isCglibProxy(Object object) //cglib
AopUtils.isJdkDynamicProxy(Object object) //jdk动态代理

2、入口函数必须是public,否则事务不起作用。这一点由Spring的AOP特性决定的。

3、切入点配置错误。
<!-- 使用annotation注解方式配置事务 -->
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
<!--使用切面方式配置事务-->
<tx:advice id="txadvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" isolation="READ_COMMITTED" propagation="REQUIRED" rollback-for="java.lang.Exception" />
</tx:attributes>
</tx:advice>

<aop:config>
<aop:pointcut id="pointcut" expression="execution(* com.tyyd..*Service.do*(..))"/>
<aop:advisor advice-ref="txadvice" pointcut-ref="pointcut"/>
</aop:config>

4、如果你使用了springmvc,可能是context:component-scan重复扫描引起的:

5、如使用mysql且引擎是MyISAM造成的(因为不支持事务),改成InnoDB即可。

② java中的事务

如果你用Spring框架,Spring中可以实现事务管理,在spring 配置文件中配置事务管理器,也可以使用Spring注解式事务,在方法上加上@Transactional注解。
@Transactional
public void save() {
//你的代码逻辑

}
如果没有使用Spring框架,可以用JDBC处理事务,如下:
try{
con.setAutoCommit(false);//开启事务 ......
con.commit();//try的最后提交事务
} catch() {
con.rollback();//回滚事务
}

阅读全文

与java注解事务相关的资料

热点内容
荣耀手机的系统有方舟编译器吗 浏览:629
单片机应用的论文 浏览:474
什么app可以查网购的真伪 浏览:444
培训班的程序员怎么样找工作 浏览:813
codeblocks编译器位数 浏览:447
bios加密怎么设置 浏览:349
台电u盘加密大师损坏 浏览:850
secure网站加密 浏览:124
电视显示加密是怎么回事 浏览:6
hadoophdfs书籍源码 浏览:584
电极服务器什么意思 浏览:10
MI预编译系统 浏览:596
python数据筛选教程 浏览:965
dell服务器怎么风扇一直叫 浏览:27
巴巴腾使用什么APP 浏览:216
程序员与it 浏览:805
农民种地用什么app 浏览:665
视频彩铃为什么服务器升级失败 浏览:588
前端程序员转正自我评价 浏览:314
单片机开发有创新点吗 浏览:114