id和name的区别
在 XML 配置中,我们可以看到,即可以通过 id 给 Bean 指定一个唯一标识符,也可以通过 name
来指定,大部分情况下这两个作用是一样的,有一个小小区别:
name 支持取多个。多个 name 之间,用 , 隔开:
<bean class="org.javaboy.User" name="user,user1,user2,user3" scope="prototype"/>
此时,通过 user、user1、user2、user3 都可以获取到当前对象:
public class Main {
public static void main(String[] args) {
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = ctx.getBean("user", User.class);
User user2 = ctx.getBean("user2", User.class);
System.out.println(user);
System.out.println(user2);
}
}
而id不支持有多个值,如果强行用,隔开,它还是一个值,例如如下配置:
<bean class="org.javaboy.User" id="user,user1,user2,user3" scope="prototype" />
这个配置表示 Bean 的名字为 user,user1,user2,user3,具体调用如下
public class Main {
public static void main(String[] args) {
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = ctx.getBean("user,user1,user2,user3", User.class);
User user2 = ctx.getBean("user,user1,user2,user3", User.class);
System.out.println(user);
System.out.println(user2);
}
}