spring中<tx:advice></tx:advice>是什么意思?作用是什么?谁能简单说下

2022-08-04 社会 55阅读

意思是这个事物advice的管理者为transactionManager,从配置文件中应该能够找到一个ID为transactionManager的bean,而这个建议中规定了save方法的传输方式为required,也就是说没有sessionfactory的时候会自动建立,有的时候就不会建立了。

当然了这只是规定了一个advice,你还需要指定一个aop:pointcut去引用他,例如

   

           expression="execution(public * x.y..*.*(..))" />

       

           advice-ref="tv" />

 

这样这个advice就被联系到了bussinessService这个pointcut上了。

扩展资料

的属性详解

1、readOnly

事务属性中的readOnly标志表示对应的事务应该被最优化为只读事务。如果值为true就会告诉Spring我这个方法里面没有insert或者update,你只需要提供只读的数据库Connection就行了,这种执行效率会比read-write的Connection高,所以这是一个最优化提示。

在一些情况下,一些事务策略能够起到显著的最优化效果,例如在使用Object/Relational映射工具(如:Hibernate或TopLink)时避免dirty checking(试图“刷新”)。

2、timeout

在属性中还有定义“timeout”值的选项,指定事务超时为几秒。一般不会使用这个属性。在JTA中,这将被简单地传递到J2EE服务器的事务协调程序,并据此得到相应的解释。

:事务通知定义,用于指定事务属性,其中“transaction-manager”属性指定事务管理器,并通过< tx:attributes 指定具体需要拦截的方法。

. 表示将拦截以save开头的方法,被拦截的方法将应用配置的事务属性: propagation="REQUIRED"表示 传播行为是Required, isolation="READ_ _COMMITTED" 表示隔离级别是提交读。

: 表示将拦截其他所有方法,被拦截的方法将应用配置的事务属性:propagation="REQUIRED"表示传播行为是Required, isolation= "READ_ COMMITTED"表示隔离级别是提交读,read-only= "true"表示事务只读。

3、关于propagation属性的7个传播行为

REQUIRED:指定当前方法必需在事务环境中运行,如果当前有事务环境就加入当前正在执行的事务环境,如果当前没有事务,就新建一个事务。这是默认值。 

SUPPORTS:指定当前方法加入当前事务环境,如果当前没有事务,就以非事务方式执行。 

MANDATORY:指定当前方法必须加入当前事务环境,如果当前没有事务,就抛出异常。

REQUIRES_NEW:指定当前方法总是会为自己发起一个新的事务,如果发现当前方法已运行在一个事务中,则原有事务被挂起,我自己创建一个属于自己的事务,直我自己这个方法commit结束,原先的事务才会恢复执行。

NOT_SUPPORTED:指定当前方法以非事务方式执行操作,如果当前存在事务,就把当前事务挂起,等我以非事务的状态运行完,再继续原来的事务。

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com