Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 春天的复合豆?_Java_Spring_Javabeans_Ioc Container - Fatal编程技术网

Java 春天的复合豆?

Java 春天的复合豆?,java,spring,javabeans,ioc-container,Java,Spring,Javabeans,Ioc Container,假设我有自己的bean,其中包含另一个硬编码的bean 如何将其与Spring配置结合起来 第一种方法是使用工厂法: <bean id="bean1" class="myClass1"/> <bean id="bean1.member" factory-bean="bean1" factory-method="getMember"/> <bean id="bean2" class="myClass2"> <property name="collab

假设我有自己的bean,其中包含另一个硬编码的bean

如何将其与Spring配置结合起来

第一种方法是使用工厂法:

<bean id="bean1" class="myClass1"/>
<bean id="bean1.member" factory-bean="bean1" factory-method="getMember"/>
<bean id="bean2" class="myClass2">
   <property name="collaborator" ref="bean1.member"/>
</bean>

另一种方法是使用EL:

<bean id="bean1" class="myClass1"/>
<bean id="bean2" class="myClass2">
   <property name="collaborator" value="#{bean1.member}"/>
</bean>

在后一种情况下,Spring没有实现依赖性。无论如何,Eclipse中的Bean图显示了不相关的Bean


有更好的方法吗?也许我可以实现一些与
MyClass1
的接口,以便将其视为容器或上下文?

您应该为
bean1.member
创建一个单独的bean,并将其注入
bean1

<bean id="bean3previouslyMember" class="myCompoundBean"/>

<bean id="bean1" class="myClass1">
   <property name="member" ref="bean3previouslyMember"/>
</bean>
<bean id="bean2" class="myClass2">
   <property name="collaborator" ref="bean3previouslyMember"/>
</bean>

除非myClass1不可修改并且没有setter,否则这通常是我们所做的