面试题:spring中有两个id相同的bean对象会报错吗?

发布时间 2023-09-04 18:09:51作者: lq-12040
  1. 一个xml文件声明两个beanid相同的对象,在项目启动时就会报错(对xml解析)。要求beanId唯一,该beanId元素标签已经被使用。
  2. 两个xml文件声明相同beanId的对象,项目启动是没有问题的。使用时,属性值是后加载的对象值(先加载的会被后加载的覆盖)
  3. @Configuration 注解 + @Bean 注解 声明的相同name,但子类对象不同的实例对象如下,只会加载第一个声明的bean对象,第二个逻辑不会走进去,故在其他程序中单独引用Cart01时,没有任何问题,只要引用Cart02,就会报错:
    • @Autowired 没有该类的实例bean NoSuchBeanDefinitionException
    • @Resource 要求的类型和提供的类型不一致 BeanNotOfRequiredTypeException
@Configuration
public class CartConfiguration {

    @Bean(name = "cart", initMethod = "initMethod")
    public Cart01 cart01() {
        Cart01 cart = new Cart01();
        cart.setId(5);
        return cart;
    }

    @Bean(name = "cart", initMethod = "initMethod")
    public Cart02 cart02() {
        Cart02 cart = new Cart02();
        cart.setId(6);
        return cart;
    }
}