BeanFactory作为SpringContainer最基本的接口,负责容器的配置,创建,管理。ApplicationContext则是BeanFactory的子接口。
BeanFactory的基本方法
1.beanlean containsBean(String name) 判断SpringContainer是否包含id为name的bean;
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
if (ctx.containsBean("person")){
Person a = (Person) ctx.getBean("person",Person.class);
}
2.Object getBean(String name) 返回id为name,类型为Object的bean实例;
Object a = ctx.getBean("person");
bean实例的返回类型为object所以如果要指定bean为其他类型需要进行强转
3.Class getType(String name) 返回id 为name的bean的类型
Class<Person> personClass = ctx.getType("person");
ApplicationContext扩展功能
预初始化所有的singleton bean
当ApplicationContext初始化完成之后容器中的所有的singleton bean都会根据设置的构造方式初始化完成并根据property设置setter方法,
只有prototype bean不会被初始化。
有关singleton bean与prototype bean的介绍详见Java Spring之Singleton bean与Prototype bean
- 国际化支持
- 资源访问
- 事件机制
- 同时加载多个配置文件
- 以声明的方式启动并创建Spring容器
ApplicationContext相对BeanFactory来说前者继承了后者的全部功能并扩展了许多新的功能,但是前者由于在初始化后会预初始化所有的singleton bean系统前期消耗较大,后期性能会明显提升。所以一般来说我们都会选择ApplicationContext作为Spring容器
网友评论