最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

spring中的FactoryBean代碼示例

 更新時(shí)間:2017年10月23日 15:32:05   作者:zhangjk1993  
這篇文章主要介紹了spring中的FactoryBean代碼示例,涉及FactoryBean的實(shí)現(xiàn)等相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。

上篇文章中我們介紹了淺談Spring的兩種配置容器,接下來我們就了解下spring中的FactoryBean的相關(guān)內(nèi)容,具體如下。

從SessionFactory說起:

在使用SSH集成開發(fā)的時(shí)候,我們有時(shí)候會(huì)在applicationContext.xml中配置Hibernate的信息,下面是配置SessionFactory的一段示例代碼:

<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="hibernateProperties"> 
      <props> 
        <!-- 是否自動(dòng)更新表項(xiàng)目 --> 
        <prop key="hibernate.hbm2ddl.auto">update</prop> 
        <!-- 數(shù)據(jù)庫使用的方言 --> 
        <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop> 
        <!-- 是否顯示產(chǎn)生的sql語句 --> 
        <prop key="hibernate.show_sql">true</prop> 
        <!-- 是否顯示格式化產(chǎn)生的sql語句 --> 
        <prop key="hibernate.format_sql">true</prop> 
      </props> 
    </property> 
    <property name="mappingResources"> 
      <list> 
        <value>bean/User.hbm.xml</value> 
      </list> 
    </property> 
  </bean> 

下面我們?cè)诔绦蛑腥∫幌聅essionFacroty,然后打印出出它的類型

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); 
System.out.println(applicationContext.getBean("sessionFactory").getClass().getName()); 

我們會(huì)發(fā)現(xiàn)它的類型為 org.hibernate.internal.SessionFactoryImpl,而不是org.springframework.orm.hibernate4.LocalSessionFactoryBean,這是為什么呢?

其實(shí)在Spring中為我們提供了兩種類型的bean,一種就是普通的bean,我們通過getBean(id)方法獲得是該bean的實(shí)際類型,另外還有一種bean是FactoryBean,也就是工廠bean,我們通過getBean(id)獲得是該工廠所產(chǎn)生的Bean的實(shí)例,而不是該FactoryBean的實(shí)例。

那么如何實(shí)現(xiàn)一個(gè)FactoryBean呢,Spring為我們提供了一個(gè)FactotyBean的接口,只要實(shí)現(xiàn)了這個(gè)接口,我們創(chuàng)建的bean就是FactoryBean,下面是一個(gè)示例

package factory; 
import org.springframework.beans.factory.FactoryBean; 
import bean.User; 
 
public class UserFactory implements FactoryBean<User>{ 
  @Override 
  public User getObject() throws Exception { 
    return new User(); 
  } 
  @Override 
  public Class<?> getObjectType() { 
    return User.class; 
  } 
  /** 
   * 工廠所管理的對(duì)象是否為單例的 
   * 即如果該方法返回true,那么通過getObject()方法返回的對(duì)象都是同一個(gè)對(duì)象 
   */ 
  @Override 
  public boolean isSingleton() { 
    return true; 
  } 
} 

在applicationContext.xml中配置一下

<bean id="userFactory" class="factory.UserFactory" /> 

然后我們?cè)賹serFactory打印出來,得到的對(duì)象為bean.User類型。

ok,那么如何才能得到UserFactory的實(shí)例,而不是User對(duì)象的實(shí)例,我們只需要在取對(duì)象時(shí)加上一個(gè)"&"符號(hào),如下所示

UserFactory userFactory = (UserFactory) applicationContext.getBean("&userFactory");

總結(jié)

以上就是本文關(guān)于spring中的FactoryBean代碼示例的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:Java Spring-Cache key配置注意事項(xiàng)介紹、Java之Spring注解配置bean實(shí)例代碼解析等,有什么問題可以隨時(shí)留言,小編會(huì)及時(shí)回復(fù)大家的。感謝朋友們對(duì)本站的支持!

相關(guān)文章

  • Java 完美判斷中文字符的方法

    Java 完美判斷中文字符的方法

    Java判斷一個(gè)字符串是否有中文一般情況是利用Unicode編碼正則來做判斷,但是其實(shí)這個(gè)區(qū)間來判斷中文不是非常精確,以下是比較完善的判斷方法
    2013-02-02
  • Spring boot的上傳圖片功能實(shí)例詳解

    Spring boot的上傳圖片功能實(shí)例詳解

    Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開發(fā)過程。這篇文章主要介紹了Spring boot 上傳圖片,需要的朋友可以參考下
    2018-03-03
  • IDEA之翻譯器的使用Translation

    IDEA之翻譯器的使用Translation

    這篇文章主要介紹了IDEA之翻譯器的使用Translation,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 關(guān)于String.format()格式化輸出方式

    關(guān)于String.format()格式化輸出方式

    String.format()是Java的格式化輸出方法,支持多種數(shù)據(jù)類型和格式化選項(xiàng),它在格式化和拼接字符串時(shí)具有較高的靈活性,但效率相對(duì)較低,特別是在處理大量數(shù)據(jù)時(shí),在實(shí)際編程中,應(yīng)根據(jù)具體需求選擇合適的字符串拼接方式
    2024-12-12
  • SpringBoot全局異常處理與定制404頁面的方法

    SpringBoot全局異常處理與定制404頁面的方法

    這篇文章主要介紹了SpringBoot全局異常處理與定制404頁面的相關(guān)資料,本文通過實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2007-09-09
  • java實(shí)現(xiàn)一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)爬蟲代碼示例

    java實(shí)現(xiàn)一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)爬蟲代碼示例

    這篇文章主要介紹了java實(shí)現(xiàn)一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)爬蟲代碼示例,還是挺不錯(cuò)的,這里分享給大家,需要的朋友可以參考下。
    2017-11-11
  • java簡(jiǎn)單實(shí)現(xiàn)多線程及線程池實(shí)例詳解

    java簡(jiǎn)單實(shí)現(xiàn)多線程及線程池實(shí)例詳解

    這篇文章主要為大家詳細(xì)介紹了java簡(jiǎn)單實(shí)現(xiàn)多線程,及java爬蟲使用線程池實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • IntelliJ IDEA修改編碼的方法步驟

    IntelliJ IDEA修改編碼的方法步驟

    這篇文章主要介紹了IntelliJ IDEA修改編碼的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Java實(shí)現(xiàn)最小生成樹算法詳解

    Java實(shí)現(xiàn)最小生成樹算法詳解

    這篇文章主要介紹了如何在Java中實(shí)現(xiàn)最小生成樹算法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定幫助,需要的可以參考一下
    2022-04-04
  • Spring Security的簡(jiǎn)單使用

    Spring Security的簡(jiǎn)單使用

    這篇文章主要介紹了Spring Security的簡(jiǎn)單使用,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot,感興趣的朋友可以了解下
    2021-04-04

最新評(píng)論

吉林市| 茶陵县| 达拉特旗| 惠水县| 灵寿县| 杭锦后旗| 长乐市| 襄城县| 开封县| 中牟县| 肥东县| 屏南县| 鄂伦春自治旗| 临海市| 南城县| 黄石市| 新巴尔虎左旗| 饶河县| 永康市| 满洲里市| 潜山县| 天祝| 揭东县| 赤峰市| 虞城县| 呼图壁县| 卫辉市| 车险| 龙岩市| 平安县| 全南县| 南投县| 金溪县| 沙洋县| 绵竹市| 宜良县| 阿合奇县| 兰西县| 宿州市| 资溪县| 台州市|