将不同的存储库对象注入引用

时间:2015-08-21 15:19:00

标签: java spring spring-mvc

我现在正在学习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标有@AutowiredInMemoryProductRepository@Repository所以InMemoryProductRepository将被注入此productRepository引用,但我的问题是,是否有另一个类实现此ProductRepository接口并标记为@Repository: 假设像

InMemoryProductRepository2.java

@Repository
        class InMemoryProductRepository2 implements ProductRepository{
        ....
       ....
    }

然后将这两个对象中的哪一个注入

@Autowired
    private ProductRepository productRepository;

?我如何区别?

谢谢,抱歉我的语言。

1 个答案:

答案 0 :(得分:1)

如果出现这种情况,您可以为每个实现bean @Repository(“name”)指定名称,并使用@Autowired使用@Qualifier(“name”)注释。