Spring 은 자동 조립 중의 나 쁜 의 미 를 어떻게 해결 합 니까?

1097 단어 스프링 시리즈
우 리 는 프로젝트 에서 자주 이러한 문 제 를 만 날 수 있 습 니 다. 예 를 들 어 하나의 인터페이스 에 두 개 이상 의 실현 류 가 있 으 면 spring 은 어떤 것 을 주입 합 니까?
사실 이런 상황 에 부 딪 히 면 특수 표 지 를 해 야 합 니 다. 그렇지 않 으 면 spring 이 잘못된 힌트 를 보 낼 수 있 습 니 다!
문 제 는 다음 과 같다.
두 실현 류 는 공동으로 DataDao 를 계승 했다.
//         imgDataDao
@Service(value="imgDataDao")
public class ImageDataDao extends DataDao{
}

//         textDataDao
@Service(value="textDataDao")
public class TextDataDao extends DataDao{
}

해결 방법:
1. @ Resource 주석 사용 하기
//        imgDataDao
@Resource(name="imgDataDao")                 
private DataDao xx;

//        textDataDao
@Resource(name="textDataDao")                 
private DataDao xx;

@ Resource 의 역할 은 @ Autowired 에 해당 합 니 다. @ Autowired 는 by Type 에 따라 자동 으로 주입 되 고 @ Resource 는 기본적으로 by Name 에 따라 자동 으로 주입 되 는 것 입 니 다. 
 
2. @ Qualifier 주석 사용 하기
@Autowired
@Qualifier("imgDataDao")
private DataDao yy;

@Autowired
@Qualifier("textDataDao")
private DataDao yy;

 
 
 

좋은 웹페이지 즐겨찾기