4
回答
spring难题,高手帮帮
注册华为云得mate10,2.9折抢先购!>>>   

下面这段代码是Spring中的依赖注入机制么?,还有Bean标签中的parent属性代表什么含义?有些看不懂

<beans>
  <bean id="employeesUCC" parent="baseTransactionProxy">
    <description />
    <property name="proxyInterfaces">
      <list>
        <value>cn.ccb.ceshi1.ceshi1.ucc.IEmployeesUCC</value>
      </list>
    </property>
    <property name="target">
      <ref bean="employeesUCCTarget" />
    </property>
  </bean>
</beans>

举报
313559947
发帖于8年前 4回/1K+阅
共有4个答案 最后回答: 4年前
parent是引用父容器中的bean. <ref bean="employeesUCCTarget" />的employeesUCCTargetshi 是引用父容器中的 employeesUCCTarget. 不是继承关系.

 引用其它的bean(协作者)

在<constructor-arg/>或<property/>元素内部还可以使用ref元素。该元素用来将bean中指定属性的值设置为对容器中的另外一个bean的引用。如前所述,该引用bean将被作为依赖注入,而且在注入之前会被初始化(如果是singleton bean则已被容器初始化)。尽管都是对另外一个对象的引用,但是通过id/name指向另外一个对象却有三种不同的形式,不同的形式将决定如何处理作用域及验证。

第一种形式也是最常见的形式是通过使用<ref/>标记指定bean属性的目标bean,通过该标签可以引用同一容器或父容器内的任何bean(无论是否在同一XML文件中)。XML 'bean'元素的值既可以是指定bean的id值也可以是其name值。

<ref bean="someBean"/>

第二种形式是使用ref的local属性指定目标bean,它可以利用XML解析器来验证所引用的bean是否存在同一文件中。local属性值必须是目标bean的id属性值。如果在同一配置文件中没有找到引用的bean,XML解析器将抛出一个例外。如果目标bean是在同一文件内,使用local方式就是最好的选择(为了尽早地发现错误)。

<ref local="someBean"/>

第三种方式是通过使用ref的parent属性来引用当前容器的父容器中的bean。parent属性值既可以是目标bean的id值,也可以是name属性值。而且目标bean必须在当前容器的父容器中。使用parent属性的主要用途是为了用某个与父容器中的bean同名的代理来包装父容器中的一个bean(例如,子上下文中的一个bean定义覆盖了他的父bean)。

<!-- in the parent context --> <bean id="accountService" class="com.foo.SimpleAccountService"> <!-- insert dependencies as required as here --> </bean>
<!-- in the child (descendant) context --> <bean id="accountService" <-- notice that the name of this bean is the same as the name of the'parent'bean class="org.springframework.aop.framework.ProxyFactoryBean">
      <property name="target">
          <ref parent="accountService"/> <-- notice how we refer to the parent bean </property> <!-- insert other configuration and dependencies as required as here --> </bean>

,-------------------------------
>>>>>>>>>>>>>>>>>>根据以上的描叙,parent类似于java中的extends,可以继承已存在的父bean,还可以覆盖
父bean的属性,也可以重新定义其他新的属性值。如果不对的地方,请指教!

顶部