一个关于spring中配置信息的问题

小姚 发布于 2012/03/19 23:53
阅读 175
收藏 0

 <!-- 配置事务管理,如果出现了脏数据等,可以回滚 -->

 <bean id="transactionManagerment" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
 <property name="sessionFactory">
 <ref bean="sessionFactory" />
 </property>
 </bean>

 <!-- 配置事务拦截, -->

 <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
 <property name="transactionManager" ref="transactionManagerment"></property>
 <property name="transactionAttributes">
 <props>
 <!-- 类方法中名称匹配的,需要事务 -->
 <!-- PROPAGATION_REQUIRED,支持当前事务,如果没有当前事务,则新创建一个,是常用的方法 -->
 <prop key="save*">PROPAGATION_REQUIRED</prop>
 <prop key="update*">PROPAGATION_REQUIRED</prop>
 <prop key="delete*">PROPAGATION_REQUIRED</prop>
 <prop key="*">PROPAGATION_REQUIRED, readOnly</prop>
 </props>

 </property>

 </bean>

 

 <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">

 <property name="beanNames">

 <list>
 <value>*Services</value>
 <value>*Service</value>
 </list>

 </property>

 <property name="interceptorNames">

 <list>
 <value>transactionInterceptor</value>
 </list>

 </property>

 </bean>

上面的beans是什么意思,我只是了解一些皮毛而已,想得到深刻一点的理解,特别是那个动态代理...

加载中
1
jeffsui
jeffsui

引用来自“小姚”的答案

我看过了,但还是不是很了解

首先明确什么是AOP

spring对事务的管理是基于aop的。

因为需要与数据联系起来,所以在事务管理器中注入(IOC)了sessionFactory。

<bean>是spring中的基本组件,可以理解为类的定义 或者说接口的定义。

拦截器其实就是AOP。

这里的拦截器是对方法进行拦截,beanNames定义了对哪些Bean定义的类或接口进行拦截 *是通配符 例如:UserServices 和 UserService 这样的(一般情况下,对业务层进行方法切面)

当然这里面使用的类都是spring提供的。

还有啥不清楚的?

jeffsui
jeffsui
@小姚 : 恩,是这样的,如果没有出现异常,事务是不会回滚的。所以在切面方法中,规定了抛出异常。 你可以通过是否抛出相应异常来判断事务管理器是否起作用。
小姚
小姚
非常感谢你的回答: 首先:那个transactionInterceptor的事务拦截器里面的transactionAttributes中配置的save*,update*等,是不是说只要访问的类方法匹配了这种类型的,就会触发这个事务管理的事务,如果是的话,这么做到底有什么意义,虽然说是“配置事务管理,如果出现了脏数据等,可以回滚”,但是我着实没有看到哪里有回滚的迹象(什么情况下才会回滚)?
0
小姚
小姚
我看过了,但还是不是很了解
0
jeffsui
jeffsui
<prop key="save*">PROPAGATION_REQUIRED</prop>

<prop key="update*">PROPAGATION_REQUIRED</prop>

<prop key="delete*">PROPAGATION_REQUIRED</prop>

<prop key="*">PROPAGATION_REQUIRED, readOnly</prop>

这里虽然规定了事务策略,不过没有规定当事务失败时,是否捕获响应的异常。


小姚
小姚
好的,非常感谢你的热心帮助...
-1
jeffsui
jeffsui
see more details in spring 官方手册
返回顶部
顶部