2012-02-28 4 views
4

의 내가 공장 콩이 있다고 가정 해 봅시다 :Spring에서 factory-bean의 factory-method에 param을 추가하는 방법은 무엇입니까?

<bean id="myFactory" class="com.company.MyFactory" lazy-init="true"> 
    <property name="myProperty" ref="propA"> 
</bean> 

이의이 propA 공장 출하 방법에 사용되는 IOC에 의해 주입 빈입니다 가정 해 봅시다. 그리고이 콩이 공장에서 생성 한 :

<bean id="bean1" factory-bean="myFactory" factory-method="instance"/> 
<bean id="bean2" factory-bean="myFactory" factory-method="instance"/> 

가 어떻게 bean2 다른 팩토리 메소드를 사용하지 않고 bean1을 아닌 다른 myProperty를 사용하여 만들 수 있습니까? 아니면, 어떻게 프로퍼티를 bean1 또는 bean2 컨피규레이션의 팩토리 메소드에 전달할 수 있습니까?

답변

10

이 약간 다른 방법으로 달성 할 수있다 :

class MyFactory { 
    public Bean instance(MyProperty myProperty) { 
     return //... 
    } 
} 

는 이제 다음과 같이 직관적 구문을 사용할 수 있습니다 :

<bean id="bean1" factory-bean="myFactory" factory-method="instance"> 
    <constructor-arg ref="propA"/> 
</bean> 
<bean id="bean2" factory-bean="myFactory" factory-method="instance"> 
    <constructor-arg ref="propB"/> 
</bean> 

믿거 나 말거나지만 propApropBinstance()로 사용됩니다 메소드 인수.

관련 문제