TransactionProxyFactoryBean

TransactionProxyFactoryBean

在我的项目中,所有经理类都以这种模式实现,

<bean id="companyManagerTxProxy" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        <property name="transactionManager" ref="transactionManager" />
        <property name="proxyTargetClass"><value>true</value></property>
        <property name="transactionAttributes">
             <props>
                <prop key="create*">PROPAGATION_REQUIRED</prop>
                <prop key="update*">PROPAGATION_REQUIRED</prop>
                <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
                <prop key="*">PROPAGATION_REQUIRED</prop>
            </props>
        </property>
    </bean>
    <bean id="companyAdminManager" parent="companyManagerTxProxy" scope="prototype">
        <property name="target">
            <bean class="lucky.src.bto.controllerImpl.CompanyAdminManagerImpl">
            </bean>
        </property>
    </bean>

您能否解释一下为什么我们在创建所有管理器的bean时使用org.springframework.transaction.interceptor.TransactionProxyFactoryBean。它的确切用途是什么?

最佳答案

这是一个广泛的问题,因为这里需要进行概念上的解释。简而言之:TransactionProxyFactoryBean是Spring的事务支持的一部分,并允许应用程序以与服务器无关的方式具有“事务”行为。换句话说:如果使用TransactionProxyFactoryBean配置服务,则可以替换EJB容器托管的Bean。

Please refer to Spring Documentation

您可能需要全面了解“交易”的概念。但是一个简短的解释是:



上面的解释涉及到AOP(面向方面​​的编程),其中您要在事务中给出的行为是“方面”。

通常需要配置三件事:



transactionAttribute是您为资源的读写操作提供事务行为的地方。在您的示例中,您的companyAdminManager被赋予了交易行为。反过来,必须使用companyAdminManager配置datasource,该ojit_code将具有数据库url,用户/密码和其他相关信息。

09-11 21:05