Java 在Spring中org.springframework.transaction.interceptor.TransactionProxyFactoryBean有什么用途
在我的项目中,所有管理器类都是以这种模式实现的Java 在Spring中org.springframework.transaction.interceptor.TransactionProxyFactoryBean有什么用途,java,spring,Java,Spring,在我的项目中,所有管理器类都是以这种模式实现的 <bean id="companyManagerTxProxy" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager" ref="transactionManager" /> <
<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>
真的
需要进行传播
需要进行传播
需要传播,只读
需要进行传播
你能解释一下为什么我们使用org.springframework.transaction.interceptor.TransactionProxyFactoryBean来创建所有经理的bean吗。它的确切用途是什么?这是一个广泛的问题,因为这里有概念上的解释。简而言之:TransactionProxyFactoryBean是Spring事务支持的一部分,它允许应用程序以独立于服务器的方式进行“事务”行为。换句话说:如果使用TransactionProxyFactoryBean配置服务,则可以替换EJB容器管理的bean 您可能需要全面理解事务的概念。但一个非常简短的解释是: 交易(信息的读取或写入)必须是 确保我们需要为软件提供“事务”行为 与数据库交互的资源(代码)(可能有其他 交易) 上面的解释稍微涉及了AOP(面向方面编程),在AOP中,您希望为事务提供的行为是“方面” 通常需要配置三件事: transactionManager、目标和transactionAttribute transactionAttribute用于为资源的读写提供事务行为。在您的示例中,
companyAdminManager
被赋予了trnaActional行为。companyAdminManager
必须依次配置datasource
,该数据源将包含数据库url、用户/通行证和其他相关信息
这里有两个很好的解释(解释每一行)
1.)
2.)我发现Scot的以下博文是一个简单易懂的例子,并附有解释。请阅读
Spring声明性事务可以是命令式(PlatformTransactionManager.class)或反应式(ReactiveTransactionManager.class)。实际上,这两个类只在trasaccationinterceptor中有所不同,trasaccationinterceptor是向事务方法提供建议的AOP/AspectJ类。您需要理解AOP/AspectJ才能理解前面的语句 如果希望以编程方式扩展Spring事务,而不是实现一个全新的TransactionManager,则只需提供TransactionInterception 例如:
@Bean
public TransactionInterceptor txAdvice() {
new TransactionInterceptor() {
@Override
@Nullable
public Object invoke(MethodInvocation invocation) {
//......have some fun
}
};
}