Spring_培训 (50页).pptVIP

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Spring_培训 (50页)

* 各位請看,這就是一個代表Assembler角色的虛擬程式檔。各位可以看到,Assembler以第三者的身分將一個DumbService的實體在ServiceCaller實體化的時候「注入」了ServiceCaller;而這樣的動作就是我們常常說的Dependency Injection。 * 我們來看看一個Assembler被賦予的責任:首先,Assembler必須掌管物件的生命週期,其中包括了物件的實體化、設定參數以及摧毀物件實體。此外,Assembler還必須處理物件之間的相依性問題;而解決方法主要有兩種:透過Setter和Constructor。 * 在簡單的介紹過Assembler這個角色之後呢,我們來看看Spring framework怎麼幫助我們來達成Dependency Injection的目的。事實上各位可以發現,Spring framework扮演的正是Assembler的角色,而Spring的ApplicationContext正是透過我們所定義的XML描述來管理:物件之間的相依性、物件的起始參數以及物件實體的管理方式,包括了Prototype以及Singleton兩種實體管理方式。ApplicationContext是Spring的核心所在,Spring正是透過ApplicationContext來管理物件生命週期以及解決物件之間的相依性。各位可以想像ApplicationContext是一個物件的pool,在這個pool當中,物件會被實體化並且賦予所需要的相依物件。在ApplicationContext當中,Spring預設是使用Singleton來管理物件實體,因此如果物件並非Thread-safe,可以考慮使用Spring的Prototype實體管理模式。我們接著看到右邊的XML;這就是Spring framework當中拿來描述物件相依性的XML檔案格式;在這個XML區段裡面,我們簡單的描述了ServiceCaller和DumbServiceImplementation之間的關係。根據我們的描述,Spring framework會在ServiceCaller實體化時,將一個DumbService的實體塞給他,完成Dependency Injection的動作。 * 我們剛剛有提到,Dependency Injection有兩種做法。但是我們現在要談的,嚴格來說並不算是Dependency Injection的一種;Dependency Lookup和我們一般比較熟悉的Service Locator Pattern比較類似,但是因為Spring Framework有支援這種Pattern,因此我們也在這裡介紹。首先呢,在Dependency Lookup的Pattern當中,Assembler要先實體化並且管理DumbService的實體,同時還要依照使用者的設定,以使用者指定的代號來註冊該物件實體(在目前的例子當中,我們以Service來當作該物件實體的代號)。然後當ServiceCaller類別向Assembler請求一個代號叫作”Service”的實體的時候,Assembler就會將代號為”Service”的實體傳給ServiceCaller,完成所謂的Dependency Lookup。 舉例來說,在現實生活當中,我肚子餓了,想要訂Pizza來吃。這個時候呢,我對於Pizza的製造過程並沒有出任何一份力;我唯一做的事情呢,就是拿起電話打3939889或者8825252來下單訂Pizza。這事實上也就是一種Dependency Lookup的表現! * 接下來,我們就來看看在Spring當中,我們要如何的使用Dependency Lookup。Spring的ApplicationContext在起始過程當中,如果發現有一個類別有實作”ApplicationContextAware”這個介面,就會自動的將自身的ApplicationContext實體「注入」。在這個例子當中,ApplicationContext發現ServiceCaller這個類別實作了ApplicationContextAware介面,因此會將ApplicationContext實體注入這個ServiceCaller的實體。 * 這就是我們剛剛提到的ServiceCaller的程式碼。首先,如我們剛剛所說的,ServiceCaller實作了ApplicationContextAware的介面,因此也實作了setApplicationContext這個方法;而ApplicationContext就是透過這個方法的呼叫傳遞進來的。接著呢我們就可以透過所取得的ApplicationContext實體來進行Dependency

文档评论(0)

zijingling + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档