spring 配置实例1(使用BeanNameAutoProxyCreator自动代理,比较省时省力的做法)

autowire="byName"会自动根据你的属性的名字帮你注入你要的bean,要不就要手动写明。

?autowire同注入相关还是同事务管理相关?

代理匹配的名字有*Manager,就是想匹配所有的ManagerObject。但是好像没有注意到,这样配置会把transactionManager也匹配上,然后定义的是find以外的方法都是要事务的。也就说transactionManager执行getTransaction的时候还会要事务,然后就是死循环,造成溢出。。

我解决的办法就是transactionManager改称transactionManagerHibernate。这么做的时候一定要注意名字的问题。别一不小心,把一个不相关的东东给弄进来的。。。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>

 <bean id="contact.SessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="configLocation" value="/contact/contact-hibernate.cfg.xml" />
 </bean>

 <!-- bussiness bean setting -->
 <bean id="contact.CatalogDao" class="wegov.contact.persistent.CatalogDAO">
  <constructor-arg><ref bean="contact.SessionFactory"/></constructor-arg>
 </bean>
 
 <bean id="contact.ItemDao" class="wegov.contact.persistent.ItemDAO">
  <constructor-arg><ref bean="contact.SessionFactory"/></constructor-arg>
 </bean>
 
 <bean id="contact.RelationDao" class="wegov.contact.persistent.RelationDAO">
  <constructor-arg><ref bean="contact.SessionFactory"/></constructor-arg>
 </bean>
 
 <bean id="platform.ResAccessHelper" class="wegov.platform.ResAccessHelper">
  <constructor-arg index="0"><ref bean="contact.SessionFactory"/></constructor-arg>
  <constructor-arg index="1"><value>wegov.contact.common.ContactRightInfo</value></constructor-arg>
 </bean>
 
 <bean autowire="byName" id="contact.CatalogHelper" class="wegov.contact.service.CatalogHelper">
  <property name="_dao" ref="contact.CatalogDao"/>
  <property name="_itemHelper" ref="contact.ContactItemHelper"/>
  <property name="_relationHelper" ref="contact.ContactRelationHelper"/>
  <property name="_resRightHelper" ref="platform.ResAccessHelper"/>
 </bean>

 <bean autowire="byName" id="contact.ContactItemHelper" class="wegov.contact.service.ContactItemHelper">
  <property name="_dao" ref="contact.ItemDao"/>
  <property name="_catalogHelper" ref="contact.CatalogHelper"/>
  <property name="_relationHelper" ref="contact.ContactRelationHelper"/>
  <property name="_resRightHelper" ref="platform.ResAccessHelper"/>
 </bean>

 <bean autowire="byName" id="contact.ContactRelationHelper" class="wegov.contact.service.ContactRelationHelper">
  <property name="_relationDao" ref="contact.RelationDao"/>
 </bean>


 <!-- Transaction Setting -->
 <!-- using JtaTransactionManager for deploy running -->
 <!--
  <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager" />
 -->

 <!-- using HibernateTransactionManager for local test -->
 <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  <property name="sessionFactory" ref="contact.SessionFactory" />
 </bean>

 <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
  <property name="transactionManager" ref="transactionManager" />
  <property name="transactionAttributes">
   <props>
    <prop key="*">PROPAGATION_REQUIRED</prop>
    <prop key="get*,have*">PROPAGATION_REQUIRED,readOnly</prop>
   </props>
  </property>
 </bean>

 <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
  <property name="beanNames">
   <value>*Helper</value>
  </property>
  <property name="interceptorNames">
   <list>
    <value>transactionInterceptor</value>
    <!-- add new Interceptor -->
   </list>
  </property>
 </bean>

这个bean不知道起什么作用?

 <bean class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
  <property name="transactionInterceptor" ref="transactionInterceptor" />
 </bean>

</beans>
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值