日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Spring中的BeanFactory定義Bean

Spring的依賴(lài)注入容器的核心是Bean工廠。Bean工廠負(fù)責(zé)管理組件和它們之間的依賴(lài)關(guān)系。一般說(shuō)來(lái),你的Beans應(yīng)該遵守JavaBeans 規(guī)范,但是這不是必須的,如果使用構(gòu)造器依賴(lài)注入來(lái)連接的Beans的時(shí)候,就沒(méi)有遵守Beans規(guī)范(Beans規(guī)范中的javabean構(gòu)造函數(shù)沒(méi)有參數(shù))。

臨滄網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),臨滄網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為臨滄上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的臨滄做網(wǎng)站的公司定做!

一個(gè)BeanFactory可以用接口org.springframework.beans.factory.BeanFactory表示, 這個(gè)接口有多個(gè)實(shí)現(xiàn)。最常使用的的簡(jiǎn)單的beanFactory實(shí)現(xiàn)是 org.springframework.beans.factory.xml.XmlBeanFactory。

如果通過(guò)配置文件來(lái)完成配置,在內(nèi)部是通過(guò)實(shí)現(xiàn)了BeanDefinition接口的類(lèi)的實(shí)例來(lái)表現(xiàn)的。Bean的配置不僅存儲(chǔ)著關(guān)于ean自己的信息,同時(shí)還有其依賴(lài)的beans的信息。對(duì)于任何實(shí)現(xiàn)了beanDefinitionRegistry接口的BeanFactory類(lèi),從配置文件中讀取BeanFactory定義Bean(BeanDefinition)數(shù)據(jù),既可以通過(guò)PropertiesBeanDefinitionReader(基于.properties文件)也可以通過(guò)XMLBeanDefinitionReader(基于XML文件)。

XmlBeanFactory派生于DefaultListableBanFactory并且簡(jiǎn)單的擴(kuò)展了它,使它能夠通過(guò)XmlBeanDefinitionReader自動(dòng)獲取配置信息。用戶(hù)不需要實(shí)例化BeanFactory,因?yàn)镾pring框架代碼會(huì)做這件事。

一個(gè)XmlBeanFactory定義Bean的內(nèi)容有:
classname:這通常是bean的真正的實(shí)現(xiàn)類(lèi)。但是如果一個(gè)bean使用一個(gè)靜態(tài)工廠方法所創(chuàng)建而不是被普通的構(gòu)造函數(shù)創(chuàng)建,那么這實(shí)際上就是工廠類(lèi)的classname bean行為配置元素:它聲明這個(gè)bean在容器的行為方式(比如prototype或singleton,自動(dòng)裝配模式,依賴(lài)檢查模式,初始化和析構(gòu)方法)。

BeanFactory調(diào)用某個(gè)類(lèi)的靜態(tài)的工廠方法來(lái)創(chuàng)建bean,class屬性指定了實(shí)際包含靜態(tài)工廠方法的那個(gè)類(lèi)。有以下3個(gè)途徑創(chuàng)建bean:
1.通過(guò)構(gòu)造函數(shù)創(chuàng)建bean
2.通過(guò)靜態(tài)工廠方法創(chuàng)建Bean
3.通過(guò)實(shí)例工廠方法創(chuàng)建bean

每一個(gè)bean都有一個(gè)或多個(gè)id(也叫作標(biāo)志符,或名字;這些名詞說(shuō)的是一回事)。這些id在管理bean的BeanFactory或 ApplicationContext中必須是唯一的。一個(gè)bean一般只有一個(gè)id,但是如果一個(gè)bean有超過(guò)一個(gè)的id,那么另外的可以認(rèn)為是別名。

BeanFactory定義Beans為兩種部署模式中的一種:singleton或prototype。如果一個(gè)bean是singleton形態(tài)的,那么就只有一個(gè)共享的實(shí)例存在, 所有和這個(gè)bean定義的id符合的bean請(qǐng)求都會(huì)返回這個(gè)唯一的、特定的實(shí)例。如果bean以non-singleton,prototype模式部署的話,對(duì)這個(gè)bean的每次請(qǐng)求都會(huì)創(chuàng)建一個(gè)新的bean實(shí)例。這對(duì)于例如每個(gè)user需要一個(gè)獨(dú)立的user對(duì)象這樣的情況是非常理想的。

Beans 默認(rèn)被部署為singleton模式,除非你指定。要記住把部署模式變?yōu)閚on-singletion(prototype)后,每一次對(duì)這個(gè)bean的請(qǐng)求都會(huì)導(dǎo)致一個(gè)新創(chuàng)建的bean,而這可能并不是你真正想要的。所以?xún)H僅在絕對(duì)需要的時(shí)候才把模式改成prototype。(我僅在 ThrowawayController時(shí)使用過(guò)singleton="false)
反向控制/依賴(lài)注射存在兩種主要的形式:

1.基于setter的依賴(lài)注射,是在調(diào)用無(wú)參的構(gòu)造函數(shù)或無(wú)參的靜態(tài)工廠方法實(shí)例化你的bean之后, 通過(guò)調(diào)用你的bean上的setter方法實(shí)現(xiàn)的。在BeanFactory定義Bean的使用基于setter方法的注射依賴(lài)的bean是真正的JavaBean。 Spring一般提倡使用基于setter方法的依賴(lài)注射,因?yàn)楹芏嗟臉?gòu)造函數(shù)參數(shù)將會(huì)是笨重的, 尤其在有些屬性是可選的情況下。

2.基于構(gòu)造函數(shù)的依賴(lài)注射,它是通過(guò)調(diào)用帶有許多參數(shù)的構(gòu)造方法實(shí)現(xiàn)的, 每個(gè)參數(shù)表示一個(gè)合作者或者屬性。  雖然Spring一般提倡在大多數(shù)情況下使用基于setter的依賴(lài)注射, 但是Spring還是完全支持基于構(gòu)造函數(shù)的依賴(lài)注射,因?yàn)槟憧赡芟胍谀切┲惶峁┒鄥?shù)構(gòu)造函數(shù)并且沒(méi)有setter方法的遺留的bean上使用Spring。另外對(duì)于比較簡(jiǎn)單的bean,使用構(gòu)造函數(shù)方法以確保bean不會(huì)處于錯(cuò)誤的狀態(tài)。

【編輯推薦】

  1. Spring3.0將全面支持REST
  2. 專(zhuān)家Isvy談Spring 3.0
  3. JSF與Spring的集成
  4. 詳細(xì)介紹Spring事務(wù)管理
  5. Spring框架的事務(wù)管理應(yīng)用分析

本文名稱(chēng):Spring中的BeanFactory定義Bean
轉(zhuǎn)載源于:http://www.5511xx.com/article/dhgdopp.html