在Spring DI中,您可以在自己的定义中“使用”您的bean吗?例如,如果我有一个名为getTest1的bean,并在其中声明了内部bean,我可以将getTest1传递给该内部bean的构造函数吗?
我想知道我是否可以使用Spring DI为工作项目实现类似装饰器模式的解决方案,但没有太多时间来使用它。谢谢!
答案 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();
}