[code="java"]
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
PROPAGATION_REQUIRED,-java.lang.Exception
PROPAGATION_REQUIRED,-java.lang.Exception
PROPAGATION_REQUIRED,-java.lang.Exception
PROPAGATION_REQUIRED,-java.lang.Exception
PROPAGATION_REQUIRED,-java.lang.Exception
PROPAGATION_REQUIRED,ISOLATION_READ_UNCOMMITTED,readOnly
PROPAGATION_REQUIRED,ISOLATION_READ_UNCOMMITTED,readOnly
PROPAGATION_REQUIRED,ISOLATION_READ_UNCOMMITTED,readOnly
PROPAGATION_REQUIRED,ISOLATION_READ_UNCOMMITTED,readOnly
PROPAGATION_REQUIRED,-java.lang.Exception
PROPAGATION_SUPPORTS
[/code]
一般我们会在applicationContext.xml这样配置service,我想知道id为loginService的bean是怎样生成的?是什么类型?
从表面上看到loginService的bean好像是basicTxProxy的bean子类,不是我们希望注入的test.service.LoginService类,对此比较疑惑。
有相关资料和书籍可以介绍吗?
其实, 这种配置方式已经非常老了, 现在一般使用tx:advice的配置方式, 大概如下:
可以见这个页面, 当然也可以找到很多中文的资料.
http://static.springsource.org/spring/docs/2.0.x/reference/transaction.html
[code="java"]
<!-- the transactional semantics... -->
tx:attributes
<!-- all methods starting with 'get' are read-only -->
<!-- other methods use the default transaction settings (see below) -->
/tx:attributes
/tx:advice
[/code]
[code="java"]
[/code]
等同于下面的配置:
[code="java"]
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED,-java.lang.Exception</prop>
<prop key="add*">PROPAGATION_REQUIRED,-java.lang.Exception</prop>
<prop key="remove*">PROPAGATION_REQUIRED,-java.lang.Exception</prop>
<prop key="update*">PROPAGATION_REQUIRED,-java.lang.Exception</prop>
<prop key="delete*">PROPAGATION_REQUIRED,-java.lang.Exception</prop>
<prop key="check*">PROPAGATION_REQUIRED,ISOLATION_READ_UNCOMMITTED,readOnly</prop>
<prop key="get*">PROPAGATION_REQUIRED,ISOLATION_READ_UNCOMMITTED,readOnly</prop>
<prop key="find*">PROPAGATION_REQUIRED,ISOLATION_READ_UNCOMMITTED,readOnly</prop>
<prop key="query*">PROPAGATION_REQUIRED,ISOLATION_READ_UNCOMMITTED,readOnly</prop>
<prop key="move*">PROPAGATION_REQUIRED,-java.lang.Exception</prop>
<prop key="*">PROPAGATION_SUPPORTS</prop>
</props>
</property>
[/code]
这样的描述应该就比较清楚了. 也就是: loginService确实是TransactionProxyFactoryBean的一个对象, 而不是test.service.LoginService.