# @Qualifier的作用
###### tags: `SpringMVC-會用到的註解`
Spring 使用@Autowired注入的介面有多個@Bean類時,可以搭配@Qualifier控制要注入哪個實例。
#### 介面
```java=
public interface BookService {
//增加一本書
int addBook(Books books);
//刪除一本書
int deleteBookByID(int id);
//更新一本書
int updateBook(Books books);
//查詢一本書
Books queryBookById(int id);
//查詢全部的書
List<Books> queryAllBook();
}
```
#### 引用BookService介面的BookServiceImpl
```java=
public class BookServiceImpl implements BookService{
//service調dao層:組合dao層
private BookMapper bookMapper;
public void setBookMapper(BookMapper bookMapper) {
this.bookMapper = bookMapper;
}
@Override
public int addBook(Books books) {
return bookMapper.addBook(books);
}
@Override
public int deleteBookByID(int id) {
return bookMapper.deleteBookByID(id);
}
@Override
public int updateBook(Books books) {
return bookMapper.updateBook(books);
}
@Override
public Books queryBookById(int id) {
return bookMapper.queryBookById(id);
}
@Override
public List<Books> queryAllBook() {
return bookMapper.queryAllBook();
}
}
```
#### controller
```java=
@Controller
@RequestMapping("/book")
public class BookController {
//controller調 service層
@Autowired
@Qualifier("BookServiceImpl")
private BookService bookService;
}
```
### 問題:當有複數的impl引用service層的BookService來實現,控制層BookController在使用@Autowired,該如何判斷使用哪個impl來進行注入?
### 答案:利用@Qualifier來決定注入的impl
### 相關閱讀
[@Autowired的用法](https://hackmd.io/mAVPK0IjSa6Ge19t86FsIA)