spring配置文件中bean的属性name与id的区别

简单的说:id用来标识bean,是唯一的,且只有一个;name定义的是bean的alias,可以有多个,并可能与其他的bean重名。

详细的说:

id是唯一标识bean.不能用特殊字符:×#@ ,不能用数字开头。在bean引用的时候只能用id指向你需要的bean;

name 可以用特殊字符,并且一个bean可以用多个名称:name=“bean1,bean2,bean3”,用逗号隔开。

通过id和name都可以取出该Bean.

BeanFactory factory=new XmlBeanFactory(new ClassPathResource("config.xml"));
Dao dao=(Dao)factory.getBean("thisbean");
Dao dao1=(Dao)factory.getBean("bean1");
Dao dao2=(Dao)factory.getBean("bean2");     .........
       // 验证是否指向同一个Bean 
          System.out.println((dao== dao1)); 
          System.out.println((dao1== dao2)); 
          // 输出bean的别名 
          String[] thisbean= factory.getAliases("thisbean"); 
          for (String strbean: thisbean) { 
              System.out.println(strbean); 
          }


配置文件中不允许出现两个id相同的,否则在初始化时即会报错;但配置文件中允许出现两个name相同的,在用getBean()返回实例时,后面一个Bean被返回,应该是前面那个被后面同名的 覆盖了。有鉴于此,为了避免不经意的同名覆盖的现象,尽量用id属性而不要用name属性。

如果id和name都没有指定,则用类全名作为name,如,则你可以通过 
getBean("com.stamen.BeanLifeCycleImpl")返回该实例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值