Spring框架的Bean配置

当在XML配置文件中,bean的name属性与类名首字母小写不一致时,通过类名获取bean会导致NoUniqueBeanDefinitionException异常。正确的做法是使用bean的自定义name来获取对象,如`Context.getBean(createMusic)`。
摘要由CSDN通过智能技术生成

图片中的红框内是xml文件中的bean的name属性,当设置的name与实例化对象的默认名字(类名首字母小写),不一致,并且程序中通过类名获取bean时会报错。

public class SpringTest2 {
    public static void main(String[] args) {
        ApplicationContext Context = new ClassPathXmlApplicationContext("Anno.xml");
        Music musicBean1 = Context.getBean(Music.class);
        System.out.println("musicBean1.toString() = " + musicBean1.toString());
    }
}
Exception in thread "main" org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'com.cql.entity.Music' available: expected single matching bean but found 2: music,createMusic
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1200)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveBean(DefaultListableBeanFactory.java:420)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:349)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:342)
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1127)
    at com.test.SpringTest2.main(SpringTest2.java:25)

Process finished with exit code 1

设置了自定义名字的,正确做法是通过方法名去获取bean,如下。

Music musicBean = (Music) Context.getBean("createMusic");
System.out.println("musicBean.toString() = " + musicBean.toString());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值