w6755180 2009-11-27 21:39
浏览 282
已采纳

关于spring parent属性的疑问

spring中的parent属性我看别人说是继承关系,但我不清楚它是怎么继承的,
比如在写service时候每个service要加入事务管理然后加入parent属性,
但service并没有明显的继承proxy呀,请问是怎么继承的??使用的是什么技术?
如果我的service继承了某个类 如下面代码所示
Test bean = (Test)new ResourceService(); //ResourceService继承Test
Test bean = (Test)a.getBean("resourceService");//这个是经过spring IOC得到的配置文件如下所示
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
value="classpath:hibernate.cfg.xml">

<bean id="transactionManager"   class="org.springframework.orm.hibernate3.HibernateTransactionManager">   
        <property name="sessionFactory">   
            <ref bean="sessionFactory" />   
         </property>   
</bean> 



 <bean id="basicTxProxy"  
      class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"  abstract="true">   
  <property name="transactionManager" ref="transactionManager" />   

  <property name="transactionAttributes">   
   <props>   

     <prop key="insert*">PROPAGATION_REQUIRED</prop>   
     <prop key="save*">PROPAGATION_REQUIRED</prop>   
     <prop key="update*">PROPAGATION_REQUIRED</prop>   
     <prop key="edit*">PROPAGATION_REQUIRED</prop>   
     <prop key="del*">PROPAGATION_REQUIRED</prop>   
     <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>   
     <prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>   
     <prop key="disPlay*">PROPAGATION_REQUIRES_NEW</prop>   
      <prop key="*">PROPAGATION_REQUIRED</prop>
   </props>   
  </property>    
 </bean>   


  <bean id="steelBasicDaoImpl" class="com.steel.hibernate.dao.impl.SteelBasicDaoImpl">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

<bean id="resourceService" parent="basicTxProxy">
    <property name="target">
        <bean class="com.steel.resource.service.ResourceService"> 
            <property name="steelBasicDaoImpl" ref="steelBasicDaoImpl" /> 
            <property name="userService" ref="userService" />   
        </bean>
    </property>
</bean>

结果打印一个语句 System.out.println(bean.getClass().getSuperclass());
new出来的显示正确,是Test,但从spring拿到的却显示转型异常,
百思不得其解,望大家能解惑

  • 写回答

4条回答 默认 最新

  • wanghaolovezlq 2009-11-27 21:55
    关注

    spring里的这个继承关系的意思和java类的继承不是一个概念的,
    spring里的这个继承关系就指继承那个bean的配置属性,不是类的继承,懂么?

    上面的配置文件就相当于

    class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" >



     <prop key="insert*">PROPAGATION_REQUIRED</prop>   
     <prop key="save*">PROPAGATION_REQUIRED</prop>   
     <prop key="update*">PROPAGATION_REQUIRED</prop>   
     <prop key="edit*">PROPAGATION_REQUIRED</prop>   
     <prop key="del*">PROPAGATION_REQUIRED</prop>   
     <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>   
     <prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>   
     <prop key="disPlay*">PROPAGATION_REQUIRES_NEW</prop>   
      <prop key="*">PROPAGATION_REQUIRED</prop> 
    















    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记