简单的说: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")返回该实例。
分享到:
相关推荐
(1)DI注入属性:name为set方法去掉set之后首字母小写,ref为bean的id,需要有set方法,Spring会自动调用进行注入 (2)BeanFactory与ApplicationContext: ApplicationContext内部封装了BeanFactory,功能更加强大...
2.3.3. 对bean命名pointcut( bean name pointcut element)的支持 2.3.4. 对AspectJ装载时织入(AspectJ load-time weaving)的支持 2.4. 中间层 2.4.1. 在XML里更为简单的声明性事务配置 2.4.2. 对Websphere ...
//这里根据bean的名字,在IOC容器中得到bean实例,这个IOC容器就是一个大的抽象工厂。 Object getBean(String name) throws BeansException; //这里根据bean的名字和Class类型来得到bean实例,和上面的方法不同在于...
public class ClassPathXmlApplicationContext implements BeanFactory { private Map, Object> beans = new HashMap, Object>(); @SuppressWarnings("unchecked") public ClassPathXmlApplicationContext() ...
2.3.3. 对bean命名pointcut( bean name pointcut element)的支持 2.3.4. 对AspectJ装载时织入(AspectJ load-time weaving)的支持 2.4. 中间层 2.4.1. 在XML里更为简单的声明性事务配置 2.4.2. 对Websphere ...
PropertySource:加载配置文件 Import:导入其他配置类 AOP 概念:面向切面编程,在不改变源码的情况下对方法进行增强,抽取横切关注点(日志处理,事务管理,安全检查,性能测试等等),使用AOP进行增强,使程序员只需要...
第二句就是整个类中最重要的地方了,顾名思义,它的目的是通过XmlBeanDefinitionReader这个XML的Reader从资源resource中(也就是你的配置文件)读取bean的定义。接下来我们打开XmlBeanDefinitionReader的...
7. //这里根据bean的名字,在IOC容器中得到bean实例,这个IOC容器就是一个大的抽象工厂。 8. Object getBean(String name) throws BeansException; 9. 10. //这里根据bean的名字和Class类型来得到bean实例,...
再根据反射的Class.forName(全路径)获取类的class文件,再通过class.newInstance()实例化对象 从而实现解耦。 1、IOC思想基于IOC容器完成,IOC容器底层就是对象工厂 (1)BeanFactory:IOC容器基本实现,是Spring内部的...
Aliasing a bean outside the bean definition ................................................ 28 Instantiating beans .......................................................................................
246 14.5.2 CORBA和RMI的互操作 247 14.6 小结 248 第15章 Spring框架 249 15.1 Spring 2.0的体系结构 249 15.2 Ioc容器 250 15.2.1 BeanFactory 250 15.2.2 ApplicationContext 252 15.2.3 Beans的生命周期过程 253...
..............................................................................................................9 1.3.7Spring 框架加载配置文件:..............................................................
beanfactory,applicationcontext(事件发布,国际化支持) * 2.注入方法 setter,construtor(参数太多,可变参数列表),接口注入 * 3.注入类型 bean,基本类型,map,list等 * 4.注入方式 byname,bytype,...
Aliasing a bean outside the bean definition ................................................ 28 Instantiating beans .......................................................................................
25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................