@resource、@Autowired、@Service在一個介面多個實現類中的應用
Spring在沒有引入註解之前,傳統的Spring做法是使用.xml檔案來對bean進行注入,所有的內容都需要配置在.xml檔案中,使配置和程式設計分離,卻增加了可讀性和複雜度。
Spring註解將複雜的配置檔案用簡單@xxx代替,當出現一個介面多個實現類的時候,究竟是用的哪個實現類呢?
示例程式碼:
public interface DataDao{
}
@Service
public class ImgDataDao implements DataDao{
}
@Service
public class PayDataDao implements DataDao{
}
public class TestCase{@Resource
private DataDao imgDataDao;
@Resource
private DataDao payDataDao;
}
1)利用@Service註解自動將類ImgDataDao和類PayDataDao註解為bean,id為imgDataDao和payDataDao,即類ImgDataDao和類PayDataDao的第一個字母小寫的id。
2)@Resource按byName自動注入,@Autowired按byType自動注入;
3)@Resource可用@Autowired替換
4)當不想用預設的i
@Resource(name="imgDataDao")
private
DataDao xx;
或者:
@Autowired
@Qualifier("imgDataDao")
private DataDao yy;