日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Spring強大的FactoryBean還能這樣用,漲知識

來源: 責編: 時間:2024-07-10 17:57:14 785觀看
導(dǎo)讀環(huán)境:Spring6.1.71. 簡介FactoryBean 接口是 Spring IoC 容器實例化邏輯的一個可插入點。如果你有復(fù)雜的初始化代碼,而這些代碼最好用 Java 而不是冗長的 XML 來表達,那么你可以通過自定義自己的 FactoryBean,在該類中編

環(huán)境:Spring6.1.7pox28資訊網(wǎng)——每日最新資訊28at.com

1. 簡介

FactoryBean 接口是 Spring IoC 容器實例化邏輯的一個可插入點。如果你有復(fù)雜的初始化代碼,而這些代碼最好用 Java 而不是冗長的 XML 來表達,那么你可以通過自定義自己的 FactoryBean,在該類中編寫復(fù)雜的初始化,然后將自定義 FactoryBean 添加到容器中。pox28資訊網(wǎng)——每日最新資訊28at.com

FactoryBean<T> 接口提供了三種方法:pox28資訊網(wǎng)——每日最新資訊28at.com

  • T getObject(): 返回該工廠創(chuàng)建的對象的實例。該實例可能是共享的,這取決于該工廠返回的是單體還是原型
  • boolean isSingleton(): 如果此 FactoryBean 返回單例,則返回 true;否則返回 false。此方法的默認實現(xiàn)返回 true。
  • Class<?> getObjectType(): 返回 getObject() 方法返回的對象類型,如果事先不知道類型,則返回空值。

FactoryBean接口在Spring框架非多的地方被使用。Spring本身就包含了50多個FactoryBean接口的實現(xiàn)。pox28資訊網(wǎng)——每日最新資訊28at.com

2. 實戰(zhàn)案例

準備基本類;pox28資訊網(wǎng)——每日最新資訊28at.com

class PersonService {  public void save() {     // TODO     System.out.println("save person...") ;  }}

接下來會基于上面的PersonService類進行FactoryBean各種案例的使用;pox28資訊網(wǎng)——每日最新資訊28at.com

2.1 簡單示例

自定義FactoryBean<PersonService>實現(xiàn);pox28資訊網(wǎng)——每日最新資訊28at.com

@Componentpublic class PersonServiceFactoryBean implements FactoryBean<PersonService> {  // 具體的實例  public PersonService getObject() throws Exception {    PersonService ps = new PersonService() ;    return ps ;  }  // 具體的類型  public Class<?> getObjectType() {    return PersonService.class ;  }  // true,返回單例容器中只會有一個PersonService  public boolean isSingleton() {    return true ;  }}

具體使用;pox28資訊網(wǎng)——每日最新資訊28at.com

// 你可以直接在其它的Bean中注入@Resource    private PersonService personService ;// 你可以通過BeanFactory手動獲取private ApplicationContext contet ;PersonService ps = context.getBean(PersonService.class) ;

使用時和普通的Bean的使用方式一致。pox28資訊網(wǎng)——每日最新資訊28at.com

2.2 多例&不指定類型

多例;pox28資訊網(wǎng)——每日最新資訊28at.com

如果你需要每次使用時返回的都是不同的實例對象,那么你可以將isSingleton返回為false。pox28資訊網(wǎng)——每日最新資訊28at.com

// 將上面的isSingleton返回為falsepublic boolean isSingleton() {  return false ;}

接下來使用時,不管是在其它組件中進行注入還是通過getBean獲取,都能確保在每個組件中使用的都不是同一個實例。pox28資訊網(wǎng)——每日最新資訊28at.com

@Componentpublic class PersonController {  @Resource  private PersonService personService ;}@Componentpublic class CommonService {  @Resource  private PersonService personService ;}

上面兩個類中注入的PersonService將不是同一個實例,如果你通過getBean獲取每次也都不是同一個實例。pox28資訊網(wǎng)——每日最新資訊28at.com

不指定類型;pox28資訊網(wǎng)——每日最新資訊28at.com

如果你將FactoryBean#getObjectType方法返回為null。那么你將無法正確的注入PersonService對象,同時程序?qū)伋霎惓?span style="display:none">pox28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片pox28資訊網(wǎng)——每日最新資訊28at.com

2.3 創(chuàng)建代理

你可以通過FactoryBean創(chuàng)建代理對象借助ProxyFactory。將getObject修改如下:pox28資訊網(wǎng)——每日最新資訊28at.com

public PersonService getObject() throws Exception {  ProxyFactory factory = new ProxyFactory() ;  factory.setTarget(new PersonService()) ;  factory.addAdvice(new MethodInterceptor() {    @Override    public Object invoke(MethodInvocation invocation) throws Throwable {      System.out.println("before...") ;      return invocation.proceed() ;    }  }) ;  return (PersonService) factory.getProxy() ;}

通過FactoryBean能夠非常方便的以編程的方式創(chuàng)建代理對象。pox28資訊網(wǎng)——每日最新資訊28at.com

2.4 獲取原始FactoryBean

如果你需要獲取FactoryBean本身,而非getObjectType類型,那么你可以通過如下方式:pox28資訊網(wǎng)——每日最新資訊28at.com

// 方式1:直接通過類型獲取private ApplicationContext context ;context.getBean(PersonServiceFactoryBean.class) ;// 方式2:通過beanName獲取,但是需要添加'&'前綴context.getBean("&psFactoryBean") ;

上面2種方式都能正確的獲取原始的FactoryBean對象。pox28資訊網(wǎng)——每日最新資訊28at.com

2.5 利用SPI獲取對象

Spring為我們提供了ServiceFactoryBean類,通過該類我們能非常方便的獲取SPI對象并注冊為容器Bean。pox28資訊網(wǎng)——每日最新資訊28at.com

@Configurationpublic class AppConfig {  @Bean  public ServiceFactoryBean serviceFactoryBean() {    ServiceFactoryBean fb = new ServiceFactoryBean() ;    // 指定SPI接口類型    fb.setServiceType(DAO.class) ;    return fb ;  }}

接下來你就可以在META-INF/services下建立DAO全限定名的文件pox28資訊網(wǎng)——每日最新資訊28at.com

com.pack.bean.create.PersonDAOcom.pack.bean.create.StudentDAO

當在容器中注入DAO時,你將得到這里的第一個PersonDAO實例。pox28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-100187-0.htmlSpring強大的FactoryBean還能這樣用,漲知識

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: DDD 是什么?—— 你以前只會用 Service + 貧血模型!

下一篇: Go與神經(jīng)網(wǎng)絡(luò):線性回歸

標簽:
  • 熱門焦點
  • Mate60手機殼曝光 致敬自己的經(jīng)典設(shè)計

    8月3日消息,今天下午博主數(shù)碼閑聊站帶來了華為Mate60的第三方手機殼圖,可以讓我們在真機發(fā)布之前看看這款華為全新旗艦的大致輪廓。從曝光的圖片看,Mate 60背后攝像頭面積依然
  • 28個SpringBoot項目中常用注解,日常開發(fā)、求職面試不再懵圈

    前言在使用SpringBoot開發(fā)中或者在求職面試中都會使用到很多注解或者問到注解相關(guān)的知識。本文主要對一些常用的注解進行了總結(jié),同時也會舉出具體例子,供大家學習和參考。注解
  • 從 Pulsar Client 的原理到它的監(jiān)控面板

    背景前段時間業(yè)務(wù)團隊偶爾會碰到一些 Pulsar 使用的問題,比如消息阻塞不消費了、生產(chǎn)者消息發(fā)送緩慢等各種問題。雖然我們有個監(jiān)控頁面可以根據(jù) topic 維度查看他的發(fā)送狀態(tài),
  • 得物效率前端微應(yīng)用推進過程與思考

    一、背景效率工程隨著業(yè)務(wù)的發(fā)展,組織規(guī)模的擴大,越來越多的企業(yè)開始意識到協(xié)作效率對于企業(yè)團隊的重要性,甚至是決定其在某個行業(yè)競爭中突圍的關(guān)鍵,是企業(yè)長久生存的根本。得物
  • .NET 程序的 GDI 句柄泄露的再反思

    一、背景1. 講故事上個月我寫過一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,當時用的是 GDIView + WinDbg 把問題搞定,前者用來定位泄露資源,后者用來定位泄露代碼,后面有朋友反
  • 小米MIX Fold 3下月亮相:今年唯一無短板的全能折疊屏

    這段時間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都有新的進展,其中榮耀、三星都已陸續(xù)發(fā)布了最新的折疊屏旗艦,尤其號榮耀Magi
  • OPPO K11搭載長壽版100W超級閃充:26分鐘充滿100%

    據(jù)此前官方宣布,OPPO將于7月25日也就是今天下午14:30舉辦新品發(fā)布會,屆時全新的OPPO K11將正式與大家見面,將主打旗艦影像,和同檔位競品相比,其最大的賣
  • 電博會與軟博會實現(xiàn)"線下+云端"的雙線融合

    在本次“電博會”與“軟博會”雙展會利好條件的加持下,既可以發(fā)揮展會拉動人流、信息流、資金流實現(xiàn)快速交互流動的作用,繼而推動區(qū)域經(jīng)濟良性發(fā)展;又可以聚
  • 親歷馬斯克血洗Twitter,硅谷的苦日子在后頭

    文/劉哲銘  編輯/李薇  馬斯克再次揮下裁員大刀。  美國時間11月14日,Twitter約4400名外包員工遭解雇,此次被解雇的員工的主要工作為內(nèi)容審核等。此前,T
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
玉米视频成人免费看| 欧美日韩亚洲综合一区| 久久av一区二区三区| 久久久久五月天| 欧美国产日本在线| 国产精品久久久久久亚洲调教| 国产亚洲福利| 亚洲国产影院| 亚洲欧美文学| 欧美va天堂在线| 国产精品家庭影院| 亚洲大胆av| 亚洲特级毛片| 久久久久综合一区二区三区| 欧美欧美午夜aⅴ在线观看| 国产精品视频大全| 亚洲第一色中文字幕| 亚洲视频在线看| 久久久久网站| 国产精品伦一区| 亚洲经典三级| 亚洲欧美精品suv| 欧美成人亚洲成人日韩成人| 国产精品视频精品视频| 亚洲国产婷婷香蕉久久久久久| 亚洲欧美日韩国产综合在线| 欧美成人69| 国产视频综合在线| 一区二区三区免费在线观看| 久久日韩粉嫩一区二区三区| 国产精品海角社区在线观看| 1024精品一区二区三区| 亚洲男女自偷自拍图片另类| 欧美福利一区| 国外成人在线视频| 亚洲综合首页| 欧美日韩亚洲综合在线| 在线欧美日韩精品| 欧美在线播放高清精品| 欧美日韩一区国产| 在线视频观看日韩| 久久av免费一区| 国产精品成人免费视频| 最新69国产成人精品视频免费| 久久久精品久久久久| 国产精品一区二区男女羞羞无遮挡| 日韩视频中文| 欧美成熟视频| 亚洲成色777777在线观看影院| 午夜久久福利| 欧美亚州在线观看| 99国产一区| 欧美大片91| 又紧又大又爽精品一区二区| 久久国产免费| 国产欧美日韩免费| 亚洲一区日韩| 欧美视频网址| 一区二区三区欧美激情| 欧美精品一区二区三区高清aⅴ| 在线观看的日韩av| 久久久久国产一区二区三区四区| 国产女主播一区二区三区| 亚洲一区二区三区在线播放| 欧美日韩一区二区欧美激情 | 国产美女诱惑一区二区| 亚洲午夜激情网页| 欧美日韩一区三区四区| 夜夜嗨av一区二区三区四区| 欧美另类亚洲| 日韩视频欧美视频| 欧美精品一区二区三区一线天视频 | 国产精品视频免费在线观看| 亚洲小视频在线| 国产精品v欧美精品v日本精品动漫 | 国产亚洲成年网址在线观看| 午夜欧美不卡精品aaaaa| 国产精品麻豆欧美日韩ww| 亚洲一区二区三区高清不卡| 欧美少妇一区| 亚洲午夜未删减在线观看| 欧美午夜精品久久久久免费视 | 性18欧美另类| 国产一区二区三区日韩| 久久精品视频免费观看| 在线成人国产| 欧美激情一区二区三区高清视频| 亚洲每日更新| 国产精品久久久久久久久久免费| 亚洲综合丁香| 国产亚洲在线| 免费高清在线视频一区·| 亚洲黄网站黄| 欧美日韩免费一区二区三区视频| 亚洲视频在线一区| 国产美女搞久久| 久久久蜜桃一区二区人| 亚洲国产成人tv| 欧美久久婷婷综合色| 亚洲午夜久久久久久尤物| 国产欧美综合一区二区三区| 久久久午夜电影| 最新精品在线| 欧美调教视频| 欧美一区久久| 亚洲成色精品| 欧美日韩视频在线| 亚洲欧美中文在线视频| 狠狠色狠狠色综合系列| 欧美激情网友自拍| 噜噜噜91成人网| 91久久久国产精品| 欧美三日本三级少妇三99| 亚洲免费在线精品一区| 激情亚洲成人| 欧美久久视频| 午夜精品一区二区三区四区| 韩日视频一区| 欧美日韩999| 欧美一区二区播放| 亚洲第一视频| 国产精品v片在线观看不卡| 欧美一区激情| 最新精品在线| 国产乱码精品一区二区三区忘忧草| 久久久久久亚洲综合影院红桃| 亚洲精品免费一二三区| 国产精品一卡二卡| 欧美mv日韩mv国产网站app| 一本一道久久综合狠狠老精东影业| 国产精品自拍小视频| 欧美成人精品一区二区三区| 亚洲一区二区三区在线播放| 怡红院精品视频| 国产精品vvv| 久久亚洲影音av资源网| 在线亚洲一区| 樱桃国产成人精品视频| 国产精品二区在线| 免费在线观看精品| 亚洲欧美乱综合| 亚洲欧洲一区| 国产性天天综合网| 欧美日韩系列| 久久免费观看视频| 亚洲在线视频一区| 亚洲破处大片| 韩国亚洲精品| 国产精品黄色在线观看| 欧美风情在线观看| 欧美一区二区三区视频免费播放 | 激情久久久久久久| 国产精品成人av性教育| 美日韩丰满少妇在线观看| 午夜精品久久久久久久99樱桃| 亚洲肉体裸体xxxx137| 国语自产精品视频在线看抢先版结局 | 鲁大师成人一区二区三区| 午夜精品久久久久久久蜜桃app| 亚洲三级免费| 樱桃国产成人精品视频| 国产美女精品视频| 国产精品theporn88| 欧美激情综合| 美女诱惑黄网站一区| 久久国内精品视频| 亚洲欧美日韩第一区 | 欧美风情在线| 久久嫩草精品久久久精品一| 午夜久久久久久| 亚洲直播在线一区| 夜夜嗨av一区二区三区网站四季av| 在线观看欧美激情| 国产自产高清不卡| 国产精品自拍小视频| 欧美性生交xxxxx久久久| 欧美激情小视频| 欧美成人69av| 免费在线看一区| 鲁大师成人一区二区三区| 久久久久国产精品人| 欧美伊久线香蕉线新在线| 亚洲欧美影院| 亚洲免费一级电影| 亚洲一区在线免费观看| 一个色综合导航| 一区二区三区 在线观看视| 亚洲精品午夜| 亚洲精品视频二区| 亚洲日本va午夜在线电影| 亚洲国产精品电影| 亚洲国产精品va在看黑人| 亚洲福利视频一区二区| 在线精品视频一区二区| 在线播放日韩欧美| 在线免费观看日本一区| 在线欧美亚洲| 亚洲片区在线| 99精品99| 亚洲一区二区动漫| 亚洲欧美第一页| 欧美一区二区三区男人的天堂| 欧美一区亚洲| 久久综合给合久久狠狠狠97色69|