jinfeng_wang

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

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks

          Spring中,含有兩個重要的Container,用于管理這些javabean他們是BeanFactoryApplicationContext。其中ApplicationContext繼承了BeanFactory的所有功能,還提供了i18n、統(tǒng)一載入資源、事件分發(fā)等功能。

          BeanFactory中,所有的bean對象的創(chuàng)建都是lazy的,包括那些singleton bean。只有javabean對象必須被使用的時候,才會創(chuàng)建該對象,才會正式的解析相應(yīng)的xml標(biāo)記,解析該beanproperty等。但是在ApplicationContext,它可以預(yù)先載入sigleton bean,而不是直到使用時才創(chuàng)建。

           

          BeanFactory最常用的實現(xiàn)是XmlBeanFactory,載入“定位xml”文件:

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

           

          ApplicationContext有三種實現(xiàn):ClassPathXmlApplicationContextFileSystemXmlApplicationContextXmlWebApplicationContext。其中前兩者也是基于路徑的,和BeanFactoryxml文件定位方式一致。

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

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

           

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

          1、  使用構(gòu)造函數(shù)創(chuàng)建Bean對象

          2、  Bean對象autowire被執(zhí)行

          3、  Bean對象調(diào)用各項setXXX方法

          4、  如果該Bean實現(xiàn)了BeanNameAware接口,則調(diào)用該對象的setBeanName()方法,設(shè)置其ID(已經(jīng)在xml配置文件中寫好了)

          5、  如果該Bean實現(xiàn)了BeanFactoryAware接口,則調(diào)用該對象的setBeanFactory()方法,傳入BeanFactory對象自身

          6、  如果已經(jīng)配置了BeanPostProcessor,那么調(diào)用BeanPostProcessorspre-

          ProcessBeforeInitialization()方法,對該Bean對象進(jìn)行處理;

          7、  如果該bean自定義了init()方法,那么調(diào)用此方法

          8、 如果已經(jīng)配置了BeanPostProcessor,那么調(diào)用該BeanPostProcessorspost

          ProcessBeforeInitialization()方法,對該Bean對象進(jìn)行處理

          9、  正常使用

          10、              系統(tǒng)銷毀,如果該bean對象實現(xiàn)了DisposableBean接口,則調(diào)用其destory()方法,

          11、              最后調(diào)用用戶在配置文件中編寫的destroy-method

           

          posted on 2005-03-02 10:36 jinfeng_wang 閱讀(1474) 評論(0)  編輯  收藏 所屬分類: spring
          主站蜘蛛池模板: 昌黎县| 泸水县| 红原县| 吉木萨尔县| 皋兰县| 南郑县| 汉源县| 林甸县| 黎平县| 富阳市| 分宜县| 南华县| 方山县| 文安县| 中西区| 巴林右旗| 右玉县| 平泉县| 留坝县| 屯昌县| 黄山市| 临汾市| 卓尼县| 普宁市| 崇州市| 克什克腾旗| 当阳市| 安国市| 文登市| 南开区| 阿尔山市| 长葛市| 翁源县| 临湘市| 寻甸| 正定县| 攀枝花市| 沙雅县| 临安市| 化隆| 喀什市|