Try   HackMD

@Qualifier的作用

tags: SpringMVC-會用到的註解

Spring 使用@Autowired注入的介面有多個@Bean類時,可以搭配@Qualifier控制要注入哪個實例。

介面

public interface BookService { //增加一本書 int addBook(Books books); //刪除一本書 int deleteBookByID(int id); //更新一本書 int updateBook(Books books); //查詢一本書 Books queryBookById(int id); //查詢全部的書 List<Books> queryAllBook(); }

引用BookService介面的BookServiceImpl

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

@Controller @RequestMapping("/book") public class BookController { //controller調 service層 @Autowired @Qualifier("BookServiceImpl") private BookService bookService; }

問題:當有複數的impl引用service層的BookService來實現,控制層BookController在使用@Autowired,該如何判斷使用哪個impl來進行注入?

答案:利用@Qualifier來決定注入的impl

相關閱讀

@Autowired的用法