国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Spring--bean的生命周期

2019-11-14 21:50:49
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
SPRing--bean的生命周期

IOC容器中bean的生命周期方法-Spring IOC容器可以管理bean的生命周期,Spring允許在bean的生命周期的特定點(diǎn)執(zhí)行定制的任務(wù)-Spring IOC容器對(duì)bean的生命周期進(jìn)行管理的過(guò)程:

  • -通過(guò)構(gòu)造器或工廠方法創(chuàng)建bean實(shí)例
  • -為bean的屬性設(shè)置值和對(duì)其他bean的引用
  • -調(diào)用bean的初始化方法
  • -bean可以使用了
  • -當(dāng)容器關(guān)閉時(shí),調(diào)用bean的銷(xiāo)毀方法

-在bean的聲明里設(shè)置init-method和dectory-method屬性,為bean指定初始化和銷(xiāo)毀方法創(chuàng)建bean后置處理器-bean后置處理器允許在調(diào)用初始化方法前后對(duì)bean進(jìn)行額外的處理-bean后置處理器對(duì)IOC容器里所有bean實(shí)例逐一處理,而非單一實(shí)例。其典型應(yīng)用是:檢查bean屬性的正確性或根據(jù)特定的標(biāo)準(zhǔn)更改bean的屬性-對(duì)bean后置處理器而言,需要實(shí)現(xiàn)Interface BeanPostProcessor接口。在初始化方法被調(diào)用前后,Spring將把每個(gè)bean實(shí)例分別傳遞給上述接口的以下兩個(gè)方法-postProcessBeforeInitialization-postProcessAfterInitialization添加bean后置處理器后bean的生命周期

  • -通過(guò)構(gòu)造器或工廠方法創(chuàng)建bean實(shí)例
  • -為bean的屬性設(shè)置值和對(duì)其他bean的引用
  • -將bean實(shí)例傳遞給bean前置處理器的postProcessBeforeInitialization方法
  • -調(diào)用bean的初始化方法
  • -將bean實(shí)例傳遞給bean后置處理器的postProcessAfterInitialization方法
  • -bean可以使用了
  • -當(dāng)容器關(guān)閉時(shí),調(diào)用bean的銷(xiāo)毀方法

bean的配置文件: 

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 5  6     <bean id="car" class="com.yl.cycle.Car"  7         init-method="init" destroy-method="destory"> 8         <property name="brand" value="Audi"></property> 9     </bean>10     11     12     <!-- 實(shí)現(xiàn)BeanPostProcessor接口,并且提供13         Object postProcessBeforeInitialization(Object bean, String beanName)   init-method方法之前調(diào)用14         Object postProcessAfterInitialization(Object bean, String beanName)    init-method方法之后調(diào)用15         的實(shí)現(xiàn)16         bean:bean實(shí)力本身17         beanName:IOC容器中配置的bean的名字18         返回值是實(shí)際上返回給用戶(hù)的那個(gè)bean,注意:可以在以上兩個(gè)方法中修改返回的bean,設(shè)置返回一個(gè)新的bean19     -->20     <!-- 配置bean的后置處理器 。 不需要配置id,IOC容器自動(dòng)識(shí)別是一個(gè)BeanPostProcessor-->21     <bean class="com.yl.cycle.MyBeanPostProcessor"></bean>22     23 </beans>

bean的后置處理器:

 1 package com.yl.cycle; 2  3 import org.springframework.beans.BeansException; 4 import org.springframework.beans.factory.config.BeanPostProcessor; 5  6 public class MyBeanPostProcessor implements BeanPostProcessor { 7  8     @Override 9     public Object postProcessAfterInitialization(Object bean, String beanName)10             throws BeansException {11         System.out.println("postProcessAfterInitialization: " + bean + ", " + beanName);12         13         Car car = new Car();14         car.setBrand("Ford");15         16         return car;17     }18 19     @Override20     public Object postProcessBeforeInitialization(Object bean, String beanName)21             throws BeansException {22         System.out.println("postProcessBeforeInitialization: " + bean + ", " + beanName);23         24         if ("car".equals(beanName)) {25             26         }27         28         29         return bean;30     }31 32 }

測(cè)試類(lèi):

 1 package com.yl.cycle; 2  3 import org.springframework.context.applicationContext; 4 import org.springframework.context.support.AbstractApplicationContext; 5 import org.springframework.context.support.ClassPathXmlApplicationContext; 6  7 public class CycleMain { 8     public static void main(String[] args) { 9         ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-cycle.xml");10         11         Car car = (Car)ctx.getBean("car");12         System.out.println(car);13         14         //關(guān)閉容器15         ((AbstractApplicationContext) ctx).close();16     }17 }


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 柞水县| 漳州市| 铜梁县| 海南省| 榕江县| 深水埗区| 台南县| 自治县| 望江县| 邯郸县| 高台县| 什邡市| 牙克石市| 丹寨县| 腾冲县| 错那县| 伊宁市| 左贡县| 伊川县| 石河子市| 会泽县| 姜堰市| 察哈| 永泰县| 兴安县| 南宫市| 佳木斯市| 岑溪市| 新龙县| 霍州市| 衡山县| 聂拉木县| 多伦县| 南汇区| 和田市| 钟祥市| 科尔| 元氏县| 克山县| 陇南市| 偏关县|