Spring 声明式事务的配置方式(四)

    这种方式将利用DefaultAdvisorAutoProxyCreator自动创建事务代理,这个类实现了BeanProcessor接口,当ApplicationContext读入所有的Bean配置信息后,这个类将扫描上下文,寻找所有的Advisor(一个Advisor是一个切入点和一个通知的组成),将这些Advisor应用到所有符合切入点的Bean中。   

 

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

       <bean id="transatioinInterceptor"

              class="org.springframework.transaction.interceptor.TransactionInterceptor">

              <!—事务传递属性-->

            <property name="transactionAttributeSource"

                ref="transactionAttributeSource"></property>

             <!—事务拦截器中需要依赖注入一个事务管理器-->

    <property name="transactionManager" ref="transactionManager"></property>

</bean>

<!—定义事务Advisor-->

<bean id="transactionAdvisor" class="org.springframework.transaction.interceptor.

           TransactionAttributeSourceAdvisor">

       <!—传入Inteceptor -->

        <property name="transactionInterceptor" ref="transactioinInterceptor"></property>

</bean>

<!—DefaultAdvisorAutoProxyCreator扫描所有的Advisor,为每个Bean创建事务代理-->

<bean

   class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator">

</bean>

 

     其实这种方法和第三种方法比较类似,都是使用Bean后处理器为目标Bean创建事务代理,不过第三种方式事务拦截器创建代理,而这种方法使用Advisor创建事务代理。事实上,这种事务代理的方式更加简洁,它将自动搜索Spring容器中的Advisor并为容器中所有Bean创建代理。不过这种配置方式的可读性不如第三种方式直观。

你可能感兴趣的:(Spring 声明式事务的配置方式(四))