@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)當不想用默認的imgDataDao和payDataDao----id命名時,可用變為如下:
@Resource(name="imgDataDao")
private DataDao xx;
或者:
@Autowired
@Qualifier("imgDataDao")
private DataDao yy;
---------------------
作者:Judy-ya
來源:CSDN
原文:https://blog.csdn.net/jisuli1987/article/details/76036744
@resource、@Autowired、@Service在一個接口多個實現類中的應用