Spring事务管理的改进

部署运行你感兴趣的模型镜像
 
Spring对service的事务管理通常类似这样:
  1. <bean id="txProxyTemplate" abstract="true"
  2. class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
  3.      <property name="transactionManager">
  4.          ref bean="transactionManager"/>
  5.      </property>
  6.      <property name="transactionAttributes">
  7.          <props>
  8.              <prop key="find*">PROPAGATION_REQUIRED, readOnly</prop>
  9.              <prop key="*">PROPAGATION_REQUIRED</prop>
  10.          </props>
  11.      </property>
  12. </bean>
  13. <bean id="userManager" parent="txProxyTemplate">
  14.      <property name="target">
  15.          <bean class="some.package.UserManagerImpl">
  16.              <property name="userDAO"><ref bean="userDAO"/></property>
  17.          </bean>
  18.      </property>
  19. </bean>以后,如果增加新的Service/Manager,则XML配置的增量是这一段:
  20. <bean id="someOtherManager" parent="txProxyTemplate">
  21.      <property name="target">
  22.          <bean class="some.package.someOtherManagerImpl">
  23.          </bean>
  24.      </property>

其实可以这样:

  1. <beans>
  2.      <!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->
  3.      <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  4.          <property name="sessionFactory">
  5.              <ref bean="sessionFactory"/>
  6.          </property>
  7.      </bean>
  8.      <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
  9.          <property name="transactionManager" ref="transactionManager"/>?
  10.    <property name="transactionAttributes">
  11.     <props>
  12.      <prop key="*">PROPAGATION_REQUIRED</prop>
  13.      <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
  14.     </props>
  15.    </property>
  16.      </bean>
  17.      <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
  18.          <property name="beanNames">
  19.              <value>*Service,*Manager</value>
  20.          </property>
  21.          <property name="interceptorNames">
  22.              <list>
  23.                  <value>transactionInterceptor</value>
  24.                  <!-- 此处增加新的Interceptor -->
  25.              </list>
  26.          </property>
  27.      </bean>
  28.      <bean class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
  29.          <property name="transactionInterceptor" ref="transactionInterceptor"/>?
  30.      </bean>
  31.      <bean id="userManager" class="some.package.UserManagerImpl" autoWire="byName"/>
  32. </beans>

以后每次的增量是这一段:

<bean id="userManager" class="some.package.UserManagerImpl" autoWire="byName"/>跟配置普通bean的方法一样,非常简洁、直观。

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值