我现在正在学习Spring大约两个星期,并尝试理解一个Repository概念,所以我仍然不熟悉很多术语,但我会尽力解释,假设我有课:
Product.java
class Product {
...
...
}
接口ProductRepository.java
public interface ProductRepository {
public List<Product> getAllProducts();
}
InMemoryProductRepository.java
@Repository
class InMemoryProductRepository implements ProductRepository{
....
....
}
productController.java
class productController{
@Autowired
private ProductRepository productRepository;
@RequestMapping("/products")
public String list(Model model) {
model.addAttribute("products", productRepository.getAllProducts());
return "products";
}
}
我的productController正是我所说的,
productRepository
未直接实施到productRepository = new InMemoryProductRepository ();
等特定对象,而productRepository
标有@Autowired
而InMemoryProductRepository
已@Repository
所以InMemoryProductRepository
将被注入此productRepository
引用,但我的问题是,是否有另一个类实现此ProductRepository
接口并标记为@Repository
:
假设像
InMemoryProductRepository2.java
@Repository
class InMemoryProductRepository2 implements ProductRepository{
....
....
}
然后将这两个对象中的哪一个注入
@Autowired
private ProductRepository productRepository;
?我如何区别?
谢谢,抱歉我的语言。
答案 0 :(得分:1)
如果出现这种情况,您可以为每个实现bean @Repository(“name”)指定名称,并使用@Autowired使用@Qualifier(“name”)注释。