不会报异常
Topic source1.系统启动的时候不会报错的,因为这两个bean的name不一样(bean name默认就是方法名称)
2.当通过bean name获取bean的时候也不会报错,例如:
SpringApplication springApplication = new SpringApplication(AnnotationApplication.class);ConfigurableApplicationContext context = springApplication.run(args);final ZoneId createZoneOfZ = (ZoneId)context.getBean("createZoneOfZ");final ZoneId createZoneOfUTC8 = (ZoneId)context.getBean("createZoneOfUTC8");System.out.println(createZoneOfZ+",---");System.out.println(createZoneOfUTC8+",---");
3.当通过type获取bean的时候,会报bean不唯一的异常
SpringApplication springApplication = new SpringApplication(AnnotationApplication.class);ConfigurableApplicationContext context = springApplication.run(args);final ZoneId createZoneOfZ = (ZoneId)context.getBean(ZoneId.class);System.out.println(createZoneOfZ+",---");
如果我们在@Configuration
类中创建了多个同类型的Bean:Spring会报NoUniqueBeanDefinitionException
异常,意思是出现了重复的Bean定义。
实际上不会报异常,因为创建多个同类型的bean如果不指定bean名,默认用方法名。
但是如果获取bean的时候不指定bean名称,而是使用类型,则会报上面的异常。
注入时异常,是因为不知道选哪个bean,与楼主问题无关,也可以把变量名称改成Bean名称指定注入哪一个:
@Bean
ZoneId createZoneOfZ() {
return ZoneId.of("Z");
}
@Bean
ZoneId createZoneOfUTC8() {
return ZoneId.of("UTC+08:00");
}
@Autowiredprivate ZoneId createZoneOfZ;
- 1
有名字可用吗
Spring会报
NoUniqueBeanDefinitionException
异常,意思是出现了重复的Bean定义。亲测不会报异常,如果错了,就修改下吧