中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBean的后處理器操作

發布時間:2021-06-04 16:19:06 來源:億速云 閱讀:151 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關SpringBean的后處理器操作,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

一 配置文件

<?xml version="1.0" encoding="GBK"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://www.springframework.org/schema/beans"
   xmlns:p="http://www.springframework.org/schema/p"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
   <!-- 配置2個普通Bean實例 -->
   <bean id="steelAxe" class="org.crazyit.app.service.impl.SteelAxe"/>
   <bean id="chinese" class="org.crazyit.app.service.impl.Chinese"
      init-method="init" p:axe-ref="steelAxe" p:name="依賴注入的值"/>
   <!-- 配置Bean后處理器,可以無需指定id屬性 -->
   <bean id="bp" class="org.crazyit.app.util.MyBeanPostProcessor"/>
</beans>

二 接口

Axe

package org.crazyit.app.service;
public interface Axe
{
   public String chop();
}

Person

package org.crazyit.app.service;
public interface Person
{
   public void useAxe();
}

三 Bean

Chinese

package org.crazyit.app.service.impl;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.crazyit.app.service.*;
public class Chinese
  implements Person,InitializingBean
{
  private Axe axe;
  private String name;
  public Chinese()
  {
    System.out.println("Spring實例化主調bean:Chinese實例...");
  }
  public void setAxe(Axe axe)
  {
    this.axe = axe;
  }
  public void setName(String name)
  {
    System.out.println("Spring執行setName()方法注入依賴關系...");
    this.name = name;
  }
  public void useAxe()
  {
    System.out.println(name + axe.chop());
  }
  // 下面是兩個生命周期方法
  public void init()
  {
    System.out.println("正在執行初始化方法 init...");
  }
  public void afterPropertiesSet() throws Exception
  {
    System.out.println("正在執行初始化方法 afterPropertiesSet...");
  }
}

SteelAxe

package org.crazyit.app.service.impl;
import org.crazyit.app.service.*;
public class SteelAxe
   implements Axe
{
   public SteelAxe()
   {
      System.out.println("Spring實例化依賴bean:SteelAxe實例...");
   }
   public String chop()
   {
      return "鋼斧砍柴真快";
   }
}

四 Bean后處理器

package org.crazyit.app.util;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.crazyit.app.service.*;
import org.crazyit.app.service.impl.*;
public class MyBeanPostProcessor
  implements BeanPostProcessor
{
  /**
   * 對容器中的Bean實例進行后處理
   * @param bean 需要進行后處理的原Bean實例
   * @param beanName 需要進行后處理的Bean的配置id
   * @return 返回后處理完成后的Bean
   */
  public Object postProcessBeforeInitialization
    (Object bean , String beanName)
  {
    System.out.println("Bean后處理器在初始化之前對"
      + beanName + "進行增強處理...");
    // 返回的處理后的Bean實例,該實例就是容器中實際使用的Bean
    // 該Bean實例甚至可與原Bean截然不同
    return bean;
  }
  public Object postProcessAfterInitialization
    (Object bean , String beanName)
  {
    System.out.println("Bean后處理器在初始化之后對"
      + beanName + "進行增強處理...");
    // 如果該Bean是Chinese類的實例
    if (bean instanceof Chinese)
    {
      // 修改其name成員變量
      Chinese c = (Chinese)bean;
      c.setName("瘋狂iOS講義");
    }
    return bean;
  }
}

五 測試結果

Spring實例化主調bean:Chinese實例...
Spring實例化依賴bean:SteelAxe實例...
Bean后處理器在初始化之前對steelAxe進行增強處理...
Bean后處理器在初始化之后對steelAxe進行增強處理...
Spring執行setName()方法注入依賴關系...
Bean后處理器在初始化之前對chinese進行增強處理...
正在執行初始化方法 afterPropertiesSet...
正在執行初始化方法 init...
Bean后處理器在初始化之后對chinese進行增強處理...
Spring執行setName()方法注入依賴關系...
瘋狂iOS講義鋼斧砍柴真快

以上就是SpringBean的后處理器操作,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德兴市| 泾阳县| 肥乡县| 临澧县| 本溪| 资阳市| 苍梧县| 抚顺县| 游戏| 普定县| 福清市| 潼关县| 蓬莱市| 马边| 大渡口区| 濉溪县| 保定市| 桂东县| 台北县| 乌兰察布市| 丹东市| 界首市| 浙江省| 五河县| 宁津县| 宁化县| 东港市| 阿拉善盟| 南皮县| 无极县| 禄劝| 璧山县| 寻乌县| 临泽县| 麻江县| 鹰潭市| 西青区| 城固县| 姜堰市| 遂溪县| 军事|