[SPRING] 스프링 autowire 인터페이스
SPRING스프링 autowire 인터페이스
나는 인터페이스 IMenuItem이있다.
public interface IMenuItem {
String getIconClass();
void setIconClass(String iconClass);
String getLink();
void setLink(String link);
String getText();
void setText(String text);
}
그런 다음이 인터페이스 구현이 있습니다.
@Component
@Scope("prototype")
public class MenuItem implements IMenuItem {
private String iconClass;
private String link;
private String text;
public MenuItem(String iconClass, String link, String text) {
this.iconClass = iconClass;
this.link = link;
this.text = text;
}
//setters and getters
}
IMenuItem 인터페이스 만 사용하여 구성 클래스에서 MenuItem의 여러 인스턴스를 만들 수있는 방법이 있습니까? @autowired 또는 무엇인가? 또한 생성자의 인수를 지정하여 자동 와이어 링을 수행 할 수 있습니까?
해결법
-
==============================
1.@Autowired는 실제로이 시나리오에 완벽합니다. 특정 클래스 (구현)를 자동 응답하거나 인터페이스를 사용할 수 있습니다.
@Autowired는 실제로이 시나리오에 완벽합니다. 특정 클래스 (구현)를 자동 응답하거나 인터페이스를 사용할 수 있습니다.
다음 예제를 고려하십시오.
public interface Item { } @Component("itemA") public class ItemImplA implements Item { } @Component("itemB") public class ItemImplB implements Item { }
이제는 @Component 주석 값에 따라 객체의 이름을 선택하여 이러한 구현 중 어느 것을 사용할 것인지 선택할 수 있습니다
이렇게 :
@Autowired private Item itemA; // ItemA @Autowired private Item itemB // ItemB
동일한 인스턴스를 여러 번 생성하려면 @Qualifier 주석을 사용하여 어떤 구현을 사용할 지 지정할 수 있습니다.
@Autowired @Qualifier("itemA") private Item item1;
특정 생성자 매개 변수로 항목을 인스턴스화해야하는 경우 XML 구성 파일을 지정해야합니다. qulifiers와 autowiring 사용법에 관한 좋은 튜토리얼은 여기에서 찾을 수 있습니다.
-
==============================
2.난 당신의 @scope 주석에 의해 일자리의 절반이 이루어집니다, 만약 당신의 프로젝트에 ImenuItem 인터페이스의 다른 구현은 여러 인스턴스를 만들 것입니다
난 당신의 @scope 주석에 의해 일자리의 절반이 이루어집니다, 만약 당신의 프로젝트에 ImenuItem 인터페이스의 다른 구현은 여러 인스턴스를 만들 것입니다
@Autowired private IMenuItem menuItem
하지만 구현이 여러 개인 경우 @Qualifer 주석을 사용해야합니다.
@Autowired @Qualifer("MenuItem") private IMenuItem menuItem
또한 여러 인스턴스를 만듭니다.
from https://stackoverflow.com/questions/31138830/spring-autowire-interface by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring Controller는 다른 컨트롤러와 일치하지 않는 모든 요청을 처리합니다. (0) | 2019.01.19 |
---|---|
[SPRING] 추상 DAO 패턴과 Spring의 "프록시를 캐스팅 할 수 없습니다 ..."라는 문제! (0) | 2019.01.19 |
[SPRING] MongoDB-Java 드라이버를 사용하여 배열에서 항목을 제거하십시오. (0) | 2019.01.19 |
[SPRING] 주석이있는 클래스의 주석이 달린 메소드 또는 메소드에 대한 Pointcut (0) | 2019.01.19 |
[SPRING] 기본 생성자가 없습니다. 중첩 예외는 스프링 MVC가있는 java.lang.NoSuchMethodException입니까? (0) | 2019.01.19 |