Spring Dependency Injection - 使用实例化对象

时间:2011-12-14 18:39:59

标签: java spring design-patterns dependency-injection

在Spring DI中,您可以在自己的定义中“使用”您的bean吗?例如,如果我有一个名为getTest1的bean,并在其中声明了内部bean,我可以将getTest1传递给该内部bean的构造函数吗?

我想知道我是否可以使用Spring DI为工作项目实现类似装饰器模式的解决方案,但没有太多时间来使用它。谢谢!

2 个答案:

答案 0 :(得分:1)

没有测试过,但我认为你需要这样的东西

<bean id="a" class="com.AClass">
   <property name="aProperty" value="y">
   <property name="bean2">
      <bean class="com.BClass">
        <constructor-arg ref="a"/>
      </bean>
   </property>
</bean>

检查here以获取有关在另一个bean中引用一个bean的更多帮助

答案 1 :(得分:1)

decorator 模式可以使用XML以下列方式表示:

<bean id="decorated" class="Outer">
    <constructor-arg>
        <bean class="Middle">
            <constructor-arg>
                <bean class="Inner"/>
            </constructor-arg>
        </bean>
    </constructor-arg>
</bean>

这相当于以下Java代码:

Common decorated = new Outer(new Middle(new Inner()));

考虑使用@Configuration方法使其更加适合Java:

@Bean
public Common outer() {
  return new Outer(middle());
}

@Bean
public Common middle() {
  return new Middle(inner());
}

@Bean
public Common inner() {
  return new Inner();
}