




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Spring框架Spring系列Spring mvc框架簡(jiǎn)介DispatcherServletDefaultAnnotationHandlerMappingAnnotationMethodHandlerAdapterUserControllerregister.jsp23ModelAndViewuser/register54InternalResourceViewResolver6Model781介紹:spring 框架結(jié)構(gòu)Spring framework 最重要的兩個(gè)特性依賴注入DI(Dependency Injection)也可以稱為 IOC(Inversion of Control),獲
2、得依賴對(duì)象的方式反轉(zhuǎn)了。理解AOP(Aspect Oriented Programming)類與屬性的關(guān)系DI 是解決什么問(wèn)題的?1:對(duì)象的復(fù)用:對(duì)于一個(gè)類,只構(gòu)建一個(gè)對(duì)象,而不是構(gòu)建多個(gè),從而節(jié)省內(nèi)存空間2:bean的統(tǒng)一管理,所有的對(duì)象全部由spring容器管理3:耦合度更松,程序維護(hù)更加合理第一步配置:web.xml contextConfigLocation classpath*:/spring-context*.xml org.springframework.web.context.ContextLoaderListener 二、配置掃描路徑三、通過(guò)注解設(shè)置關(guān)系通過(guò) Componen
3、t 注解,標(biāo)記該類的對(duì)象是有spring 容器管理的通過(guò) Autowired 注解,標(biāo)記某個(gè)屬性是由spring 進(jìn)行注入的Spring bean 容器三種經(jīng)常用到的實(shí)現(xiàn):1.ClassPathXmlApplicationContext:從類路徑中加載。2.FileSystemXmlApplicationContext:從文件系統(tǒng)加載。3.XmlWebApplicationContext:從web系統(tǒng)中加載。二、裝配Bean2.1 容納你的bean2.1.2 使用應(yīng)用上下文(續(xù))ApplicationContext context = new FileSystemXmlApplicationC
4、ontext( c:foo.xml);ApplicationContext context = new ClassPathXmlApplicationContext( foo.xml);二、裝配Bean2.1 容納你的bean2.1.2 使用應(yīng)用上下文(續(xù))除了應(yīng)用上下文提供的附加功能外,應(yīng)用上下文與bean工廠的另一個(gè)重要區(qū)別是關(guān)于單例bean如何被加載。bean工廠延遲加載所有bean,直到getBean()方法被調(diào)用。應(yīng)用上下文會(huì)(applicationContext)在啟動(dòng)后預(yù)載入所有單例bean.這樣可確保應(yīng)用不需要等待他們被創(chuàng)建。二、裝配Bean2.1 容納你的bean2.1.3
5、bean的生命周期 bean被載入到容器中時(shí),他的生命周期就開始了。:1.容器尋找bean的定義信息并實(shí)例化。2.使用依賴注入,spring按bean定義信息配置bean的所有屬性。3.若bean實(shí)現(xiàn)了BeanNameAware接口,工廠調(diào)用Bean的setBeanName ()方法傳遞bean的ID。4.若bean實(shí)現(xiàn)了BeanFactoryAware接口,工廠調(diào)用setBeanFactory() 方法傳入工廠自身。5.若BeanPostProcessor(bean后置處理器)和bean關(guān)聯(lián),則它們的 postProcessBeforeInitialization()方法被調(diào)用。 過(guò)濾器舉例
6、理解6.若bean指定了ini-method方法、,它將被調(diào)用。7.最后,若有BeanPostProcessor和bean關(guān)聯(lián),則它們的 postProcessAfterInitialization()方法被調(diào)用、。二、裝配Bean2.1 容納你的bean2.1.3 bean的生命周期(續(xù))將bean從工廠中刪掉有兩種方法:1.若bean實(shí)現(xiàn)了DisposableBean接口, distroy()方法被調(diào)用。2.如果指定了定制的銷毀方法,就調(diào)用這個(gè)方法。二、裝配Bean2.1 容納你的bean2.1.3 bean的生命周期(續(xù))實(shí)例化設(shè)置屬性值調(diào)用BeanNameAware的setBeanNa
7、me()方法調(diào)用BeanFactoryAware的setBeanFactory()方法調(diào)用BeanPostProcessor的預(yù)初始化方法(before調(diào)用InitializingBean的afterPropertiesSet()方法調(diào)用調(diào)用定制的初始化方法調(diào)用BeanPostProcessor的后初始化方法(after)Bean可以使用了容器關(guān)閉調(diào)用DisposableBean的destory()方法調(diào)用定制的銷毀方法Bean在Spring Bean應(yīng)用上下文中的生命周期調(diào)用ApplicationContextAware方法setApplicationContext()方法二、裝配Bean2
8、.1 容納你的bean2.1.3 bean的生命周期(續(xù))實(shí)例化設(shè)置屬性值調(diào)用BeanNameAware的setBeanName()方法調(diào)用BeanFactoryAware的setBeanFactory()方法調(diào)用InitializingBean的afterPropertiesSet()方法調(diào)用調(diào)用定制的初始化方法Bean可以使用了容器關(guān)閉調(diào)用DisposableBean的destory()方法調(diào)用定制的銷毀方法Bean在Spring Bean工廠中的生命周期二、裝配Bean2.2 基本裝配 在spring容器內(nèi)拼湊bean叫做裝配。裝 配bean的時(shí)候,需要告訴容器哪些bean 以及容器如何
9、使用依賴注入將它們配合在 一起。二、裝配Bean2.2 基本裝配2.2.1 使用XML裝配 xml是最常見的spring應(yīng)用系統(tǒng)配置源。 幾種spring容器都支持使用xml裝配bean,包括: 1.XmlBeanFactory:調(diào)用ClassPathResource載入上下文 定義文件(比如applicationContext.xml)。 2.ClassPathXmlApplicationContext:從類路徑載 入上下文定義文件。 3.XmlWebApplicationContext:從web應(yīng)用上下文 中載入定義文件。二、裝配Bean2.2 基本裝配2.2.1 使用XML裝配(續(xù))上下
10、文定義文件的根元素是.有多個(gè)子元素。每個(gè)元素定義了一個(gè)bean如何被裝配到spring容器中。 二、裝配Bean2.2 基本裝配2.2.2 添加一個(gè)bean對(duì)bean的最基本的配置包括bean的ID和他的全稱類名。bean的id是foo。二、裝配Bean2.2 基本裝配-scopeprototype、singleton、request 、session、global-sessionspring中的bean缺省情況下是單例模式。始終返回一個(gè)實(shí)例。若想返回不同的實(shí)例的話需要定義成原型模式。bean的singleton屬性告訴上下文該bean是否為單例的。缺省為true。若為false的話,為原型b
11、ean。二、裝配Bean2.2 基本裝配2.2.2 添加一個(gè)bean(續(xù)) 使用原型bean會(huì)對(duì)性能產(chǎn)生影響,盡量不要設(shè)置為prototype,除非有必要。二、裝配Bean2.2 基本裝配2.2.2 添加一個(gè)bean(續(xù)) 實(shí)例化與銷毀 spring實(shí)例化bean或銷毀bean時(shí),有時(shí)需要作一些處理工作,因此spring可以在創(chuàng)建和拆卸bean的時(shí)候調(diào)用bean的兩個(gè)生命周期方法。 PostConstruct public void ini() PreDestroy public void destroy() 二、裝配Bean2.2 基本裝配2.2.2 添加一個(gè)bean(續(xù)) spring也提
12、供了兩個(gè)接口來(lái)實(shí)現(xiàn)相同的功能: InitializingBean和DisposableBean. InitializingBean接口提供了一個(gè)afterPropertiesSet()方法。 DisposableBean接口提供了destroy(). 不推薦使用該接口,它將你的bean和springAPI邦定在一起。二、裝配Bean2.2 基本裝配2.2.3 通過(guò)set方法注入依賴 元素的子元素指明了使用它們的set方法來(lái)注入。可以注入任何東西,從基本類型到集合類,甚至是應(yīng)用系統(tǒng)的bean。二、裝配Bean2.2 基本裝配2.2.3 通過(guò)set方法注入依賴(續(xù)) 簡(jiǎn)單bean配置 配置bean
13、的簡(jiǎn)單屬性,基本數(shù)據(jù)類型和string。 tom 二、裝配Bean2.2 基本裝配2.2.3 通過(guò)set方法注入依賴(續(xù)) 引用其它bean 二、裝配Bean2.2 基本裝配2.2.3 通過(guò)set方法注入依賴(續(xù)) 內(nèi)部bean 這種方式的缺點(diǎn)是你無(wú)法在其它地方重用這個(gè)bar實(shí)例,原因是它是專門為foo而用。二、裝配Bean2.2 基本裝配繼承繼承配置覆蓋父 Bean配置可以設(shè)置 的abstract 屬性為 true, Spring 不會(huì)實(shí)例化該Bean二、裝配Bean2.2 基本裝配2.2.3 通過(guò)set方法注入依賴(續(xù)) 裝配集合 若bean的屬性是集合類型,按如下處理: 裝配List和數(shù)
14、組: bar1 二、裝配Bean2.2 基本裝配2.2.3 通過(guò)set方法注入依賴(續(xù)) 裝配集合 裝配set: set使用方法和list一樣,不同的是對(duì)象被裝配到set 中,而list是裝配到List或數(shù)組中裝配 二、裝配Bean2.2 基本裝配2.2.3 通過(guò)set方法注入依賴(續(xù)) 裝配map: key值必須是string的,key-ref可以是其他bean 二、裝配Bean2.2 基本裝配2.2.3 通過(guò)set方法注入依賴(續(xù)) 裝配Properties: bar1 bar2 二、裝配Bean2.2 基本裝配2.2.3 通過(guò)set方法注入依賴(續(xù)) 若bean的屬性是集合類型,按如下處
15、理: 設(shè)置null: 二、裝配Bean2.2 基本裝配2.2.3 通過(guò)set方法注入依賴(續(xù)) Set注入的替代: set注入是一種直接方式,也可通過(guò)構(gòu)造函數(shù)設(shè)置一些屬性值。二、裝配Bean2.2 基本裝配2.2.4 通過(guò)構(gòu)造函數(shù)注入依賴set注入的缺點(diǎn)是無(wú)法清晰表達(dá)哪些屬性是必須的,哪些是可選 的,構(gòu)造注入的優(yōu)勢(shì)是通過(guò)構(gòu)造強(qiáng)制依賴關(guān)系,不可能實(shí)例化不 完全的或無(wú)法使用的bean。 :如果屬性是類類型,則使用 ref=“”二、裝配Bean2.3 自動(dòng)裝配 有四種自動(dòng)裝配類型: 1.byName尋找和屬性名相同的bean,若找不到,則裝不上。 2.byType:尋找和屬性類型相同的bean,找不
16、到,裝不上,找到多個(gè)拋異常。 3.constructor:查找和bean的構(gòu)造參數(shù)一致的一個(gè)或 多個(gè)bean,若找不到或找到多個(gè),拋異常。按照參數(shù)的類型裝配 4.autodetect: (3)和(2)之間選一個(gè)方式。不確定 性的處理與(3)和(2)一致。 5.defualt : 這個(gè)需要在 6.no : 不自動(dòng)裝配,這是autowrite的默認(rèn)值. 說(shuō)明: 不推薦使用,但是作為授課,我們還是要了解這些知識(shí),面試用的上.二、裝配Bean2.3 自動(dòng)裝配2.3.1 處理自動(dòng)裝配的不確定性 使用byType和constructor自動(dòng)裝配時(shí),若找到多個(gè)符合條件的bean,會(huì)報(bào)異常,因此最好的方式是不
17、用自動(dòng)組裝。二、裝配Bean2.3 自動(dòng)裝配2.3.2 混合使用手動(dòng)和自動(dòng)組裝 二、裝配Beanspring2.5 spring2.5提供了配置. 該配置可激活在類中探測(cè)到的各種注解,Required Autowire PostConstrct PreDestroy Resource EJB PersistenceContext WebServiceRef等等, 也可以選擇為這些注解激活單獨(dú)的后處理器. 例如:AutowiredAnnotationBeanPostProcessor(處理自動(dòng)裝配) CommonAnnotationBeanPostProcessor(生命周期等) 注意:該標(biāo)記不
18、能激活事務(wù)處理.需要使用tx:annotation-driven這個(gè)知識(shí)點(diǎn)很有用,在項(xiàng)目中,我們?cè)倬唧w使用。二、裝配Bean2.3 自動(dòng)裝配2.3.3 缺省自動(dòng)組裝 默認(rèn)不是自動(dòng)組裝。 通過(guò) 可將bean設(shè)置為自動(dòng)組裝。二、裝配Bean2.4 使用spring的特殊bean 讓spring特殊對(duì)待這些bean。使它們可以: 1.通過(guò)配置后加工bean,涉及到Bean和Bean工廠生命 周期。 2.改變依賴注入,將字符串轉(zhuǎn)換成其它類型。 3.從屬性文本裝載信息,包括信息國(guó)際化。 4.監(jiān)聽并處理其它bean及spring發(fā)布的系統(tǒng)消息。 5.知道自己在spring中的唯一表識(shí)。二、裝配Bean2.
19、4 使用spring的特殊bean2.4.1 對(duì)bean進(jìn)行后處理 BeanPostProcessor接口提供機(jī)會(huì)來(lái)修改bean。 public interface BeanPostProcessor /Bean初始化(調(diào)用afterPropertiesSet()以及Bean的指 /定initmethod方法)之前被調(diào)用。 Object postProcessorBeforeInitialation(); /在初始化之后馬上調(diào)用 Object postProcessorAfterInitialization(); 二、裝配Bean2.4 使用spring的特殊bean2.4.1 對(duì)bean進(jìn)行
20、后處理(續(xù)) 注冊(cè)后處理Bean 如果使用的是Bean工廠,需要調(diào)用工廠的addBeanPostProcessor()來(lái)注冊(cè). factory.addBeanPostProcessor(); 如果使用的是上下文同其他Bean一樣: 二、裝配Bean2.4 使用spring的特殊bean2.4.2 對(duì)bean工廠進(jìn)行后處理 BeanPostProcessor在bean載入后,對(duì)bean進(jìn)行一些后處理工作。而BeanFactoryPostProcessor在bean工廠載入所有bean的定義后,實(shí)例化bean之前,對(duì)Bean工廠做一些后處理工作。 public interface BeanFactoryPostProcessor public void postProcessorBeanFactory(); 如果使用的是應(yīng)用上下文不需要將他注冊(cè)為Bean工廠后處理器。上下文會(huì)自動(dòng)注冊(cè)它。按照正常的Bean聲明即可。二、裝配Bean2.4 使用spring的特殊bean2.4.3 分散配置(有兩種方式引入文件) 將配置文件分成幾個(gè)分散的配置文件。如數(shù)據(jù)源。 xx/
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 拔尖創(chuàng)新人才課題申報(bào)書
- 貴州課題申報(bào)書怎么寫的
- 低年級(jí)微型課題申報(bào)書
- 高校思政類課題申報(bào)書
- 教師課題申報(bào)評(píng)審書
- 化工課題申報(bào)書范文
- 黨務(wù)課題申報(bào)書范文模板
- 醫(yī)學(xué)課題申報(bào)書的撰寫
- 校史課題研究申報(bào)書
- 智能項(xiàng)目課題申報(bào)書范文
- 供養(yǎng)直系親屬有關(guān)文件
- 出口退稅手冊(cè)核銷操作步驟
- 穿孔鋁板技術(shù)交底
- 第三章社科信息檢索原理與技術(shù)PPT課件
- 危大工程管理細(xì)則(廣西區(qū)規(guī)定)
- HALCON手冊(cè)簡(jiǎn)體中文版
- 聲學(xué)原理及聲學(xué)測(cè)試
- 機(jī)構(gòu)占比分時(shí)指標(biāo)(升級(jí)版)源碼作者:羅克hq
- 水利工程竣工決算表格
- 《夏洛特的網(wǎng)》導(dǎo)讀題
- 人防及地下停車場(chǎng)工程監(jiān)理大綱(完整版)
評(píng)論
0/150
提交評(píng)論