2个同名但不同的bean,如何自动装配?

时间:2013-01-24 11:48:46

标签: java spring hibernate jpa

在我的java项目中,我有2个具有相同名称但不同包的实体,我也为这些实体提供了相应的dao。

现在由于2个具有相同名称的实体,它提供了重复的扫描错误,因此我使用其完全限定名称为这些实体添加了name属性。

例如:实体(name =“p.c.k.Entity)& Entity(name =”p.a.b.Entity)

但是现在我对应的daos无法自动装配,我收到以下错误:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type...

我是否必须在Dao中更改任何内容以支持实体中的“名称”属性更改。

我正在使用Hibernate,JPA和Spring。

3 个答案:

答案 0 :(得分:0)

我认为您可以使用@Qualifier注释

@Autowired
@Qualifier("p.c.k.Entity")
private Entity entity;

来自here

答案 1 :(得分:0)

默认情况下,自动装配按类型完成。所以你可以直接使用@Autowired注释,因为两个实体都是不同的类,确保它们是spring bean(这里我的意思是那些由Spring管理)。

@Autowired // nothing to specify, Spring automatically autowire the bean by checking type
private p.c.k.Entity entity;
@Autowired // nothing to specify, Spring automatically autowire the bean by checking type
private p.a.b.Entity entity1;

答案 2 :(得分:0)

我也有这个问题,除了重命名其中一个类之外,找不到任何解决方法。在不同的包装中应该足够了,但事实并非如此。