1. 程式人生 > >springMVC 使用註解注入介面實現類

springMVC 使用註解注入介面實現類

1.比如有一個介面如下:

  1. publicinterface Filter {  
  2.     public String doFilter(String param);  
  3. }  

2.有如下介面實現類:

  1. publicclass TimeFilter implements Filter {  
  2.     @Override
  3.     public String doFilter(String param) {  
  4.         return param.replace("aa""bb");  
  5.     }  
  6. }  

3.使用方式:在介面實現類定義位置添加註解 @Service("timeFilter"),如下:

  1. import org.springframework.stereotype.Service;  
  2. @Service("timeFilter")  
  3. publicclass TimeFilter implements Filter {  
  4.     @Override
  5.     public String doFilter(String param) {  
  6.         return param.replace("aa""bb");  
  7.     }  
  8. }  

4.在需要注入的地方使用如下方式引入:

    @Autowired
    @Qualifier("timeFilter")
    Filter timeFilter;

注意:

1.在飲用實現類的使用,使用的是實現類的介面(這是因為 springMVC 代理的介面)。

2.在飲用實現類的時候,需要使用@Qualifier 註解,註明使用哪個名稱的實現類(用來區分哪一個例項)。

  否則可能出現下面的情況:

@Autowired是按型別進行裝配的,那麼我一個介面UserInterface,有多個實現類AImpl,BImpl....這些實現類我都加入了Spring容器,當我在一個類中使用如下語句:

1 2 @Autowired private IUserInterface userInterface;

當容器中存在多個bean的型別與需要注入的相同時,注入會失敗