我们可以为同一个bean创建两个bean id吗?

时间:2018-06-20 13:32:17

标签: spring

我正在尝试为一个bean创建两个bean id。 我正在收到NoUniqueBeanDefinitionException。 有什么可能解决此问题的方法?

谢谢

2 个答案:

答案 0 :(得分:1)

Bean ID应该是唯一的。如果要创建2个相同类的bean,请为它们提供不同的id /名称,然后使用@Qualifier自动装配确切的bean。

答案 1 :(得分:1)

手动创建bean并为其命名:

public class BeanClass {
}

@Configuration
public class ConfigurationClass {

    @Bean(name = "instance1")
    public BeanClass getBeanClass1() {
       return new BeanClass();
    }

    @Bean(name = "instance2")
    public BeanClass getBeanClass2() {
       return new BeanClass();
    }
}

现在使用@Qualifier自动连接bean:

@Service
public class YourService {
     @Autowire
     @Qualifier("instance1")
     public BeanClass bean;
}

如果您希望将未指定的bean设置为默认bean(那么无需使用@Qualifier,则将@Primary添加到所需的bean中。

@Primary // This tell spring to pick this bean if no `@Qualifier` is presented
@Bean(name = "instance2")
public BeanClass getBeanClass2() {
   return new BeanClass();
}