今天在做东西的时候遇到了个问题,我写的代码一般是一个manager对应一个dao,如果在spring 中应用事务的时候 ,
一般人都用的是声明式事务的方式,也就是用的是TransactionProxyFactoryBean这个,但是用这个后它只能针对一个target来进行 事务管理,
所以我用了自动代理方式进行事务的bean create。假如有多个方法相识的manager时就可以用这个了。

spring配置文件如下
 

<bean id="matchNameInterceptor"
          
class="org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource">  //通过名称来进行匹配,以及transactiondefinition 
        <property name="properties">
            
<props>
                
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
                
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
                
<prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>
                
<prop key="insert*">PROPAGATION_REQUIRED</prop>
            
</props>
        
</property>
    
</bean>
    
<bean id="transactionInterceptor"
          
class="org.springframework.transaction.interceptor.TransactionInterceptor">  //事务的 interceptor 
        <property name="transactionManager" ref="transactionManager"/>
        
<property name="transactionAttributeSource" ref="matchNameInterceptor"/>
    
</bean>

    
    
<bean id="autoProxyCreator"
          
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">  //最关键的~~自动对所列表的bean进行装配,
        <property name="interceptorNames">
            
<list>
                
<idref local="transactionInterceptor"/>    //将interceptor 和bean联合起来 所需要装配的interceptor ,也可以是其他的interceptor 
            </list>
        
</property>
        
<property name="beanNames">
            
<list>
                
<idref local="iThreadManager"/>  //这里为需要装配的bean 的list 
                <idref local="iUserManager"/>
            
</list>
        
</property>
    
</bean>



有不对的地方~欢迎各位大大指教