==
BeanFactory接口与ApplicationContext接口
BeanFactory接口:
Bean工厂(org.springframework.beans.factory.BeanFactory)是Spring框架最核心
的接口,提供Ioc配置机制,使管理不同类型的java对象成为可能
ApplicationContext接口:
应用上下文(org.springframework.context.ApplicationContext)建立在BeanFactory基础之上
,提供了更多面向应用的功能,比如国际化支持、框架事件体系,更易于创建实际应用
一般称BeanFactory为IOC容器,ApplicationContext为应用上下文,BeanFactory是Spring框架的基础设施,
面向Spring本身,ApplicationContext面向使用Spring框架的开发者,几乎所有的应用场合都可以直接使用
ApplicationContext而非底层的BeanFactory;
ApplicationContext是由BaenFactory派生而来,
BeanFactory中很多功能需要以编程方式实现,
ApplicaitonContext则主要由配置方式实现
ApplicaitonContext类体系结构,其主要有两个实现类:
ClassPathXmlApplicationContext
从类路径加载配置文件
FileSystemXmlApplicationContext
从文件系统加载配置文件
BeanFactory
采用延迟加载Bean,直到第一次使用getBean()方法获取Bean实例时,
才会创建Bean。 按需加载,运行时出现错误
ApplicationContext
ApplicationContext在自身被实例化时一次完成所有bean的创建。大多数时候使用ApplicationContext
区别:
在服务启动时ApplicationContext就会检验XML文件的正确性,不会产生运行时bean装配错误
BeanFactory在启动时,不会校验xml文件的正确性,获取bean时,如果装配错误就会产生异常
加载多配置文件的时候:
方式一:
ApplicationContext app = new ClassPathXmlApplicationContext("applicationcontext-*.xml")
方式二:
ApplicationContext app = new ClassPathXmlApplicationContext(new String[]{"applicationcontext-
1.xml","applicationcontext-2.xml")
介绍bean标签:
控制如何实例化对象
a、lazy-init属性(实例化阶段)
true:懒加载
false:立即加载
<beans>里default-lazy-init:当前配置文件里的所有bean对象都设置为懒加载。
b、init-method属性
用于设置对象 初始化阶段 调用的方法。
c、destory-method属性
用于设置对象 销毁阶段 调用的方法。
d、Scope属性可取值 作用域属性
singleton:默认值,单例的,使用ApplicationContext启动时实例化对象
prototype:原型,每次调用时实例化一次
request:每次请求时实例化对象
session:每次产生session(HttpSession)时实例化
application:
global session
单例设计模式