1. 程式人生 > >@resource、@Autowired、@Service在一個介面多個實現類中的應用

@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

mgDataDao和payDataDao----id命名時,可用變為如下:

@Resource(name="imgDataDao")                             

private DataDao xx;

或者:

@Autowired

@Qualifier("imgDataDao")

private DataDao yy;