jinfeng_wang

G-G-S,D-D-U!

BlogJava 首页 新随笔 联系 聚合 管理
  400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks

Spring中,含有两个重要的Container,用于管理这些javabean他们是BeanFactoryApplicationContext。其中ApplicationContext继承了BeanFactory的所有功能,还提供了i18n、统一载入资源、事件分发等功能。

BeanFactory中,所有的bean对象的创建都是lazy的,包括那些singleton bean。只有javabean对象必须被使用的时候,才会创建该对象,才会正式的解析相应的xml标记,解析该beanproperty等。但是在ApplicationContext,它可以预先载入sigleton bean,而不是直到使用时才创建。

 

BeanFactory最常用的实现是XmlBeanFactory,载入“定位xml”文件:

BeanFactory factory = new XmlBeanFactory(new FileInputStream("beans.xml"));

 

ApplicationContext有三种实现:ClassPathXmlApplicationContextFileSystemXmlApplicationContextXmlWebApplicationContext。其中前两者也是基于路径的,和BeanFactoryxml文件定位方式一致。

ApplicationContext context =new FileSystemXmlApplicationContext("c:/foo.xml");

ApplicationContext context = new ClassPathXmlApplicationContext("foo.xml");

 

BeanFactory管理Bean对象的生命周期:

1、  使用构造函数创建Bean对象

2、  Bean对象autowire被执行

3、  Bean对象调用各项setXXX方法

4、  如果该Bean实现了BeanNameAware接口,则调用该对象的setBeanName()方法,设置其ID(已经在xml配置文件中写好了)

5、  如果该Bean实现了BeanFactoryAware接口,则调用该对象的setBeanFactory()方法,传入BeanFactory对象自身

6、  如果已经配置了BeanPostProcessor,那么调用BeanPostProcessorspre-

ProcessBeforeInitialization()方法,对该Bean对象进行处理;

7、  如果该bean自定义了init()方法,那么调用此方法

8、 如果已经配置了BeanPostProcessor,那么调用该BeanPostProcessorspost

ProcessBeforeInitialization()方法,对该Bean对象进行处理

9、  正常使用

10、              系统销毁,如果该bean对象实现了DisposableBean接口,则调用其destory()方法,

11、              最后调用用户在配置文件中编写的destroy-method

 

posted on 2005-03-02 10:36 jinfeng_wang 阅读(1466) 评论(0)  编辑  收藏 所属分类: spring

只有注册用户登录后才能发表评论。


网站导航: