springMVC 使用註解注入介面實現類
阿新 • • 發佈:2019-02-15
1.比如有一個介面如下:
- publicinterface Filter {
- public String doFilter(String param);
- }
2.有如下介面實現類:
- publicclass TimeFilter implements Filter {
- @Override
- public String doFilter(String param) {
- return param.replace("aa", "bb");
- }
- }
3.使用方式:在介面實現類定義位置添加註解 @Service("timeFilter"),如下:
- import org.springframework.stereotype.Service;
- @Service("timeFilter")
- publicclass TimeFilter implements Filter {
- @Override
- public String doFilter(String param) {
- return param.replace("aa", "bb");
- }
- }
4.在需要注入的地方使用如下方式引入:
@Autowired
@Qualifier("timeFilter")
Filter timeFilter;
注意:
1.在飲用實現類的使用,使用的是實現類的介面(這是因為 springMVC 代理的介面)。
2.在飲用實現類的時候,需要使用@Qualifier 註解,註明使用哪個名稱的實現類(用來區分哪一個例項)。
否則可能出現下面的情況:
@Autowired是按型別進行裝配的,那麼我一個介面UserInterface,有多個實現類AImpl,BImpl....這些實現類我都加入了Spring容器,當我在一個類中使用如下語句:
1 2 |
@Autowired
private
IUserInterface userInterface;
|
當容器中存在多個bean的型別與需要注入的相同時,注入會失敗