Java Spring中@Transactional在ProxyFactoryBean上的性能
在我的应用程序中,我最初使用ProxyFactoryBean将事务应用于我的DAOBean,如下所示:Java Spring中@Transactional在ProxyFactoryBean上的性能,java,spring,transactions,Java,Spring,Transactions,在我的应用程序中,我最初使用ProxyFactoryBean将事务应用于我的DAOBean,如下所示: <bean id="buyProductDAO" class="com.trading.persistence.impl.jdbc.BuyProductDAOImpl" scope="prototype"> <property name="jdbcTemplate"> <ref bean="jdbcTemplate"/> &l
<bean id="buyProductDAO" class="com.trading.persistence.impl.jdbc.BuyProductDAOImpl" scope="prototype">
<property name="jdbcTemplate">
<ref bean="jdbcTemplate"/>
</property>
</bean>
<bean id="buyProductDAOProxy" class="org.springframework.aop.framework.ProxyFactoryBean" scope="singleton">
<property name="proxyInterfaces">
<value>com.trading.persistence.impl.jdbc.BuyProductDAO</value>
</property>
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
<value>buyProductDAO</value>
</list>
</property>
</bean>
com.trading.persistence.impl.jdbc.BuyProductDAO
交易接收器
买产品刀
在这种情况下,如果我从代码中发现代理bean,它将返回事务bean。此外,目前,事务应用于类级别
我想重构我的代码以使用@Transactionl。转换后会对性能产生什么影响?我计划在方法级别应用事务,与当前实现的类级别相反。在Spring中直接使用
ProxyFactoryBean
作为声明性事务管理的一种方式是一种非常古老的样式,不再需要了
:
TransactionProxyFactoryBean在哪里?
Spring 2.0和2.0版本中的声明性事务配置
以上内容与以前版本的Spring有很大不同。主要
不同之处在于不再需要配置
TransactionProxyFactoryBean
Spring 2.0之前的配置样式仍然100%有效
配置把新事物看作是简单的定义
TransactionProxyFactoryBean代表您
看起来你已经开始喜欢(这几乎是现在的标准),所以没有理由不完全接受
@Transactional
划分风格。首先,我没有看到在你的bean定义中设置targetObject(代理需要一个目标)
在您当前的配置中,所有方法都将得到建议-事务将应用于DAO类中的所有方法,类似于在类级别应用@Transactional
当您将重构代码以在特定方法上使用@Transactional时,只建议使用这些方法
这是唯一的区别。谢谢你的回复。更改对性能有何影响?正如Spring文档所说,现有的Spring工具正在代表您初始化TransactionProxyFactoryBeans。所以在这个区域,如果不在标准杆上,这是可以忽略不计的。性能方面的考虑主要来自以下方面:1)底层持久性选择(SpringJDBC/orm/hibernate)的非最佳使用,2)DB连接池的非使用,3)低效的批处理操作等