成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

BeanFactory和FactoryBean在Spring中的區(qū)別是什么

BeanFactory和FactoryBean在Spring中的區(qū)別是什么?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

在海湖新等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作按需設(shè)計(jì)網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),成都營(yíng)銷(xiāo)網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè)公司,海湖新網(wǎng)站建設(shè)費(fèi)用合理。

BeanFactory接口:

IoC容器的頂級(jí)接口,是IoC容器的最基礎(chǔ)實(shí)現(xiàn),也是訪問(wèn)Spring容器的根接口,負(fù)責(zé)對(duì)bean的創(chuàng)建,訪問(wèn)等工作。

其實(shí)在容器的初始化的時(shí)候,會(huì)對(duì)BeanFactory做很多事情,如:

obtainFreshBeanFactory();獲取BeanFactory;

prepareBeanFactory(beanFactory);BeanFactory的預(yù)準(zhǔn)備工作(BeanFactory進(jìn)行一些設(shè)置)

postProcessBeanFactory(beanFactory);BeanFactory準(zhǔn)備工作完成后進(jìn)行的后置處理工作;

invokeBeanFactoryPostProcessors(beanFactory);執(zhí)行BeanFactoryPostProcessor的方法;

BeanFactoryPostProcessor:BeanFactory的后置處理器。在BeanFactory標(biāo)準(zhǔn)初始化之后執(zhí)行的;

FactoryBean接口:

可以返回bean的實(shí)例的工廠bean,通過(guò)實(shí)現(xiàn)該接口可以對(duì)bean進(jìn)行一些額外的操作,例如根據(jù)不同的配置類(lèi)型返回不同類(lèi)型的bean,簡(jiǎn)化xml配置等。在使用上也有些特殊,BeanFactory接口中有一個(gè)字符常量String FACTORY_BEAN_PREFIX = "&"; 當(dāng)我們?nèi)カ@取BeanFactory類(lèi)型的bean時(shí),如果beanName不加&則獲取到對(duì)應(yīng)bean的實(shí)例;

如果beanName加上&,則獲取到BeanFactory本身的實(shí)例;FactoryBean接口對(duì)應(yīng)Spring框架來(lái)說(shuō)占有重要的地位,Spring本身就提供了70多個(gè)FactoryBean的實(shí)現(xiàn)。他們隱藏了實(shí)例化一些復(fù)雜的細(xì)節(jié),給上層應(yīng)用帶來(lái)了便利。從Spring3.0開(kāi)始,F(xiàn)actoryBean開(kāi)始支持泛型。

代碼展示:

//創(chuàng)建一個(gè)Spring定義的FactoryBean
public class ColorFactoryBean implements FactoryBean<Color> {

  //返回一個(gè)Color對(duì)象,這個(gè)對(duì)象會(huì)添加到容器中
  @Override
  public Color getObject() throws Exception {
    // TODO Auto-generated method stub
    System.out.println("ColorFactoryBean...getObject...");
    return new Color();
  }
  @Override
  public Class<?> getObjectType() {
    // TODO Auto-generated method stub
    return Color.class;
  }
  //是單例?
  //true:這個(gè)bean是單實(shí)例,在容器中保存一份
  //false:多實(shí)例,每次獲取都會(huì)創(chuàng)建一個(gè)新的bean;
  @Override
  public boolean isSingleton() {
    // TODO Auto-generated method stub
    return false;
  }
}
public class Color {
  
  private Car car;

  public Car getCar() {
    return car;
  }

  public void setCar(Car car) {
    this.car = car;
  }

  @Override
  public String toString() {
    return "Color [car=" + car + "]";
  }
  
}

xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:context="http://www.springframework.org/schema/context"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

  <bean id="colorFactoryBean" class="spring2.ColorFactoryBean"></bean>

</beans>

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

public class Test1 {
    ClassPathXmlApplicationContext xmlBeanFactory = null;
    @Before
    public void initXmlBeanFactory() {
      System.out.println("\n========測(cè)試方法開(kāi)始=======\n");
      xmlBeanFactory = new ClassPathXmlApplicationContext("spring3.xml");
    }

    @After
    public void after() {
      System.out.println("\n========測(cè)試方法結(jié)束=======\n");
    }

    @Test
    public void test8() {
      System.out.println(xmlBeanFactory.getBean("colorFactoryBean"));
       System.out.println("===================");
      System.out.println(xmlBeanFactory.getBean("&colorFactoryBean"));
    
    }
}

測(cè)試結(jié)果:

========測(cè)試方法開(kāi)始=======

十二月 09, 2019 4:49:52 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@2e5c649: startup date [Mon Dec 09 16:49:52 CST 2019]; root of context hierarchy
十二月 09, 2019 4:49:52 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [spring3.xml]
ColorFactoryBean...getObject...
Color [car=null]
===================
spring2.ColorFactoryBean@6ddf90b0

========測(cè)試方法結(jié)束=======

看完上述內(nèi)容,你們掌握BeanFactory和FactoryBean在Spring中的區(qū)別是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

分享標(biāo)題:BeanFactory和FactoryBean在Spring中的區(qū)別是什么
當(dāng)前地址:http://jinyejixie.com/article0/ghhgoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、網(wǎng)站導(dǎo)航網(wǎng)頁(yè)設(shè)計(jì)公司、用戶體驗(yàn)面包屑導(dǎo)航、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)
桃园县| 余干县| 平果县| 遵义市| 鸡东县| 江口县| 林芝县| 江口县| 那坡县| 随州市| 奉新县| 耿马| 台北市| 盐源县| 南漳县| 宁安市| 永善县| 瓦房店市| 房产| 广东省| 车险| 应城市| 栾城县| 沭阳县| 峨边| 东海县| 永宁县| 南和县| 新郑市| 桂林市| 兴义市| 青铜峡市| 广宗县| 桃江县| 资中县| 台江县| 普安县| 渝中区| 汉阴县| 电白县| 盐山县|