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

正文內(nèi)容

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

2025-06-28 22:29本頁面
  

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