으로 목록에 패키지의 모든 인스턴스를 추가 나는 추가 방법 클래스 "상자"모든 과일을 수용해야 이 클래스는 모든 IFruits 구현이 추가 될 것입니다 (패키지 xyfruits, inst. xyfruits.Apple에 표시됨).봄
첫 번째 부분은 간단합니다 :
<bean id="box" class="x.y.Box"/>
하지만 어떻게 모든 IFruit 인스턴스를 연결할 수 있나요?
감사합니다. 당신이 목록의 세터를 만드는 경우
으로 목록에 패키지의 모든 인스턴스를 추가 나는 추가 방법 클래스 "상자"모든 과일을 수용해야 이 클래스는 모든 IFruits 구현이 추가 될 것입니다 (패키지 xyfruits, inst. xyfruits.Apple에 표시됨).봄
첫 번째 부분은 간단합니다 :
<bean id="box" class="x.y.Box"/>
하지만 어떻게 모든 IFruit 인스턴스를 연결할 수 있나요?
감사합니다. 당신이 목록의 세터를 만드는 경우
, 당신은 봄 응용 프로그램 컨텍스트에서 IFruit
인터페이스의 모든 인스턴스를 찾아 그들을로드, 아무것도 정의 할 필요가 없습니다. 물론
public class Box {
@Autowired
List <IFruit> fruits; //This should contain all IFruit's in the ApplicationContext
public void add (IFruit fruit) {
fruits.add(fruit);
}
}
을, 당신은 추가해야 요소 <context:annotation-config/>
을 @Autowired
의 XML 구성에 적용하면 ...
는 setFruits
, 당신은 이런 식으로 연결할 수 있습니다 말 :
<bean id="box" class="x.y.Box">
<property name="fruits">
<list>
<ref bean="fruit1" />
<ref bean="fruit2" />
...
</list>
</property>
</bean>
<bean id="fruit1" class="x.y.fruits.Apple" />
...
당신은이 유사하게 사용하여 생성자 주입을 할 수 있습니다. 당신이 필드를 @Autowire
경우
좋습니다! 하지만 모든 수업을 나열해야합니까? 주어진 패키지에서 모든 클래스를 사용하고 싶습니다. –
@ Vojtěch : 클래스를 한 곳에서 나열해야합니다. 주어진 패키지의 모든 클래스를 자동으로 찾는 방법은 없습니다. – casablanca
이 질문과 대답은 무엇입니까? http://stackoverflow.com/a/9144271/280244 – Ralph
인스턴스로 선언 된 콩을 의미하거나 콩으로 실제로 선언하지 않고 모든 구현 클래스의 단일 인스턴스를 수집하려면? – mrembisz