InMemoryProductRepository

InMemoryProductRepository

我现在只学习Spring大约2周,并尝试了解Repository的概念,所以我仍然不熟悉许多术语,但是假设我上课,我会尽力进行解释:

产品.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;


?我该如何区分它们?

谢谢,对不起我的语言。

最佳答案

如果存在这种情况,则应为每个实现中的bean @Repository(“ name”)命名,并在@Autowired中使用@Qualifier(“ name”)批注。

07-24 21:31