freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

項(xiàng)目實(shí)踐精解:基于struts-spring-hibernate的java應(yīng)用開(kāi)發(fā)-資料下載頁(yè)

2025-06-28 22:29本頁(yè)面
  

【正文】 0。 Bean定義的解釋特 性說(shuō) 明classbean的類(lèi)id和namebean的標(biāo)志符 (id與name)singleton或prototypeSingleton的使用與否構(gòu)造函數(shù)參數(shù)設(shè)置bean的屬性和合作者bean的屬性設(shè)置bean的屬性和合作者自動(dòng)裝配模式自動(dòng)裝配協(xié)作對(duì)象依賴(lài)檢查模式依賴(lài)檢查初始化模式生命周期接口析構(gòu)方法生命周期接口注意。然而,絕大多數(shù)的用戶(hù)代碼不需要與BeanDefination直接接觸。3.bean類(lèi)class屬性通常是強(qiáng)制性的,有兩種用法。在絕大多數(shù)情況下,BeanFactory直接調(diào)用bean的構(gòu)造函數(shù)來(lái)“new”一個(gè)bean(相當(dāng)于調(diào)用new的Java代碼),class屬性指定了需要?jiǎng)?chuàng)建的bean的類(lèi)。在比較少的情況下,BeanFactory調(diào)用某個(gè)類(lèi)的靜態(tài)的工廠方法來(lái)創(chuàng)建bean,class屬性指定了實(shí)際包含靜態(tài)工廠方法的那個(gè)類(lèi)(至于靜態(tài)工廠方法返回的bean的類(lèi)型是同一個(gè)類(lèi)還是完全不同的另一個(gè)類(lèi),這并不重要)。1)通過(guò)構(gòu)造函數(shù)創(chuàng)建bean當(dāng)使用構(gòu)造函數(shù)創(chuàng)建bean時(shí),所有普通的類(lèi)都可以被Spring使用,并且和Spring兼容。這就是說(shuō),被創(chuàng)建的類(lèi)不需要實(shí)現(xiàn)任何特定的接口或者按照特定的樣式進(jìn)行編寫(xiě)。僅僅指定bean的類(lèi)就足夠了。然而,根據(jù)bean使用的IoC類(lèi)型,你可能需要一個(gè)默認(rèn)的(空的)構(gòu)造函數(shù)。另外,BeanFactory并不局限于管理真正的JavaBean,它也能管理任何你想讓它管理的類(lèi)。雖然很多使用Spring的人喜歡在BeanFactory中用真正的JavaBean(僅包含一個(gè)默認(rèn)的(無(wú)參數(shù)的)構(gòu)造函數(shù),在屬性后面定義相對(duì)應(yīng)的setter和getter方法),但是在你的BeanFactory中也可以使用特殊的非bean樣式的類(lèi)。舉例來(lái)說(shuō),如果你需要使用一個(gè)遺留下來(lái)的完全沒(méi)有遵守JavaBean規(guī)范的連接池,不要擔(dān)心,Spring同樣能夠管理它。使用XmlBeanFactory你可以像下面這樣定義你的bean class。bean id=exampleBean class=/bean name=anotherExample class=/ 至于為構(gòu)造函數(shù)提供(可選的)參數(shù),以及對(duì)象實(shí)例創(chuàng)建后設(shè)置實(shí)例屬性,將會(huì)在后面敘述。2)通過(guò)靜態(tài)工廠方法創(chuàng)建bean當(dāng)你定義一個(gè)使用靜態(tài)工廠方法創(chuàng)建的bean,同時(shí)使用class屬性指定包含靜態(tài)工廠方法的類(lèi),這個(gè)時(shí)候需要factorymethod屬性來(lái)指定工廠方法名。Spring調(diào)用這個(gè)方法(包含一組可選的參數(shù))并返回一個(gè)有效的對(duì)象,之后這個(gè)對(duì)象就完全和構(gòu)造方法創(chuàng)建的對(duì)象一樣。用戶(hù)可以使用這樣的bean定義在遺留代碼中調(diào)用靜態(tài)工廠。下面是一個(gè)bean定義的例子,聲明這個(gè)bean要通過(guò)factorymethod指定的方法創(chuàng)建。注意,這個(gè)bean定義并沒(méi)有指定返回對(duì)象的類(lèi)型,只指定包含工廠方法的類(lèi)。在這個(gè)例子中,createInstance 必須是static方法。bean id=exampleBean class= factorymethod=createInstance/至于為工廠方法提供(可選的)參數(shù),以及對(duì)象實(shí)例被工廠方法創(chuàng)建后設(shè)置實(shí)例屬性,將會(huì)在后面敘述。3)通過(guò)實(shí)例工廠方法創(chuàng)建bean使用一個(gè)實(shí)例工廠方法(非靜態(tài)的)創(chuàng)建bean和使用靜態(tài)工廠方法非常類(lèi)似,調(diào)用一個(gè)已存在的bean(這個(gè)bean應(yīng)該是工廠類(lèi)型)的工廠方法來(lái)創(chuàng)建新的bean。使用這種機(jī)制,class屬性必須為空,而且factorybean屬性必須指定一個(gè)bean的名字,這個(gè)bean一定要在當(dāng)前的bean工廠或者父bean工廠中,并包含工廠方法。而工廠方法本身仍然要通過(guò)factorymethod屬性設(shè)置。下面是一個(gè)例子。! The factory bean, which contains a method called createInstance bean id=myFactoryBean class=... .../bean! The bean to be created via the factory bean bean id=exampleBean factorybean=myFactoryBean factorymethod=createInstance/雖然我們要在后面討論設(shè)置bean的屬性,但是,這個(gè)方法意味著工廠bean本身能夠被容器通過(guò)依賴(lài)注射來(lái)管理和配置。4.Bean的標(biāo)志符(id與name)每一個(gè)bean都有一個(gè)或多個(gè)id(也叫做標(biāo)志符或名字,這些名詞說(shuō)的是一回事)。這些id在管理bean的BeanFactory或ApplicationContext中必須是惟一的。一個(gè)bean差不多總是只有一個(gè)id,但是,如果一個(gè)bean有超過(guò)一個(gè)的id,那么另外的那些本質(zhì)上可以認(rèn)為是別名。在一個(gè)XmlBeanFactory中(包括ApplicationContext的形式),你可以用id或者name屬性來(lái)指定bean的id(s),并且在這兩個(gè)或其中一個(gè)屬性中至少指定一個(gè)id。id屬性允許你指定一個(gè)id,并且它在XML DTD(定義文檔)中作為一個(gè)真正的XML元素的ID屬性被標(biāo)記,所以XML解析器能夠在其他元素指回向它的時(shí)候做一些額外的校驗(yàn)。正因如此,用id屬性指定bean的id是一個(gè)比較好的方式。然而,XML規(guī)范嚴(yán)格限定了在XML ID中合法的字符。通常這并不是真正限制你,但是,如果你有必要使用這些字符(在ID中的非法字符),或者你想給bean增加其他的別名,那么你可以通過(guò)name屬性指定一個(gè)或多個(gè)id(用逗號(hào)或分號(hào)分隔)。5.Singleton的使用與否Beans被定義為兩種部署模式中的一種:singleton或nonsingleton(后一種也叫做prototype,盡管這個(gè)名詞用的不精確)。如果一個(gè)bean是singleton形態(tài)的,那么就只有一個(gè)共享的實(shí)例存在,所有和這個(gè)bean定義的id符合的bean請(qǐng)求都會(huì)返回這個(gè)惟一的、特定的實(shí)例。如果bean以nonsingleton、prototype模式部署的話(huà),對(duì)這個(gè)bean的每次請(qǐng)求都會(huì)創(chuàng)建一個(gè)新的bean實(shí)例。這對(duì)于每個(gè)user需要一個(gè)獨(dú)立的user對(duì)象的情況是非常理想的。Beans默認(rèn)被部署為singleton模式,除非你指定。要記住把部署模式變?yōu)閚onsingletion(prototype)后,每一次對(duì)這個(gè)bean的請(qǐng)求都會(huì)導(dǎo)致一個(gè)新創(chuàng)建的bean,而這可能并不是你真正想要的。所以,僅僅在絕對(duì)需要的時(shí)候才把模式改成prototype。在下面這個(gè)例子中,兩個(gè)bean一個(gè)被定義為singleton,而另一個(gè)被定義為nonsingleton(prototype)??蛻?hù)端每次向BeanFactory請(qǐng)求都會(huì)創(chuàng)建新的exampleBean,而AnotherExample僅僅被創(chuàng)建一次,在每次對(duì)它請(qǐng)求都會(huì)返回這個(gè)實(shí)例的引用。bean id=exampleBean class= singleton=false/bean name=yetAnotherExample class= singleton=true/注意,當(dāng)部署一個(gè)bean為prototype模式,這個(gè)bean的生命周期就會(huì)有稍許改變。 通過(guò)定義,Spring無(wú)法管理一個(gè)nonsingleton/prototype bean的整個(gè)生命周期,因?yàn)楫?dāng)它創(chuàng)建之后,它被交給客戶(hù)端,而且容器根本不再跟蹤它了。當(dāng)說(shuō)起nonsingleton/prototype bean的時(shí)候,你可以把Spring的角色想像成“new”操作符的替代品。從那之后的任何生命周期方面的事情都由客戶(hù)端來(lái)處理。beans包提供了以編程的方式管理和操控bean的基本功能,而context包增加了ApplicationContext,它以一種更加面向框架的方式增強(qiáng)了BeanFactory的功能。多數(shù)用戶(hù)可以以一種完全的聲明式方式來(lái)使用ApplicationContext,甚至不用去手工創(chuàng)建它,但是卻去依賴(lài)像ContextLoader的支持類(lèi),在J2EE的Web應(yīng)用的啟動(dòng)進(jìn)程中用它啟動(dòng)ApplicationContext。當(dāng)然,這種情況下還可以以編程的方式創(chuàng)建一個(gè)ApplicationContext。它是由BeanFactory接口集成而來(lái),提供BeanFactory所有的功能。為了以一種更像面向框架的方式工作,context包使用分層和有繼承關(guān)系的上下文類(lèi),包括:1.MessageSource,提供對(duì)i18n消息的訪問(wèn);2.資源訪問(wèn),比如URL和文件;3.事件傳遞給實(shí)現(xiàn)了ApplicationListener接口的bean;4.載入多個(gè)(有繼承關(guān)系)上下文類(lèi),使得每一個(gè)上下文類(lèi)都專(zhuān)注于一個(gè)特定的層次,比如應(yīng)用的Web層。因?yàn)锳pplicationContext包括了BeanFactory所有的功能,所以通常建議先于BeanFactory使用,除了有限的一些場(chǎng)合,比如在一個(gè)Applet中,內(nèi)存的消耗是關(guān)鍵的,每千字節(jié)都很重要。接下來(lái),敘述ApplicationContext在BeanFactory的基本能力上增加的功能。(1)使用MessageSourceApplicationContext接口繼承MessageSource接口,所以提供了messaging功能(i18n或者國(guó)際化)。同NestingMessageSource一起使用,就能夠處理分級(jí)的信息,這些是Spring提供的處理信息的基本接口。讓我們很快瀏覽一下這里定義的方法。String getMessage (String code、Object[] args、String default、Locale loc):這個(gè)方法是從MessageSource取得信息的基本方法。如果對(duì)于指定的locale沒(méi)有找到信息,則使用默認(rèn)的信息。傳入的參數(shù)args被用來(lái)代替信息中的占位符,這個(gè)是通過(guò)Java標(biāo)準(zhǔn)類(lèi)庫(kù)的MessageFormat實(shí)現(xiàn)的。String getMessage (String code、Object[] args、Locale loc):本質(zhì)上和上一個(gè)方法是一樣的,除了一點(diǎn)區(qū)別:沒(méi)有默認(rèn)值可以指定;如果信息找不到,就會(huì)拋出一個(gè)NoSuchMessage Exception。String getMessage(MessageSourceResolvable resolvable、Locale locale):上面兩個(gè)方法使用的所有屬性都可以封裝到一個(gè)叫做MessageSourceResolvable的類(lèi)中,你可以通過(guò)這個(gè)方法直接使用它。當(dāng)ApplicationContext被加載的時(shí)候,它會(huì)自動(dòng)查找在context中定義的MessageSource bean,這個(gè)bean必須叫做message source。如果找到了這樣的一個(gè)bean,所有對(duì)上述方法的調(diào)用將會(huì)被委托給找到的message source。如果沒(méi)有找到message source,ApplicationContext將會(huì)嘗試查它的父親是否包含這個(gè)名字的bean。如果有,它將會(huì)把找到的bean作為Message Source。如果它最終沒(méi)有找到任何信息源,一個(gè)空的StaticMessageSource將會(huì)被實(shí)例化,使它能夠接受上述方法的調(diào)用。Spring目前提供了兩個(gè)MessageSource的實(shí)現(xiàn),它們是ResourceBundleMessageSource和StaticMessageSource。它們都實(shí)現(xiàn)了NestingMessageSource,以便能夠嵌套地解析信息。StaticMessageSource很少被使用,但是它提供以編程的方式向source增加信息。Resource BundleMessageSource用得更多一些,我們將提供它的一個(gè)例子。beans bean id=messageSource class= MessageSource property name=basenames list valueformat/value valueexceptions/value valuewindows/value /list /property /bean/beans 這段配置假定你在classpath有3個(gè)resource bundle,分別叫做fformat、exceptions和windows。使用JDK通過(guò)ResourceBundle解析信息的標(biāo)準(zhǔn)方式,任何解析信息的請(qǐng)求都會(huì)被處理。(2)事件傳遞ApplicationContext中的事件處理是通過(guò)ApplicationEvent類(lèi)和ApplicationListener接口來(lái)提供的。如果上下文中部署了一個(gè)實(shí)現(xiàn)了ApplicationListener接口的bean,每次一個(gè)ApplicationEvent發(fā)布到ApplicationContext時(shí),那個(gè)bean就會(huì)被通知。實(shí)質(zhì)上,這是標(biāo)準(zhǔn)的Observer設(shè)計(jì)模式。Spring提供了3個(gè)標(biāo)準(zhǔn)事件,如表62所示。表62 內(nèi)置事件事 件解 釋ContextRefreshedEvent當(dāng)Applicati
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1