版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第五章,Spring autoProxing(自動代理),上節(jié)回顧,本章目標(biāo),使用spring的動態(tài)代理 Spring和struts2整合,什么是spring的自動代理,因?yàn)槿绻麘?yīng)用程序規(guī)模大時,如果要提供的Advice的目標(biāo)對象很多,則一個一個為它們建立代理對象會是件麻煩事。 為此,Spring為一些情況提供自動代理。 自動代理可以讓你不用為每一個目標(biāo)對象手動定義代理對象 使用自動代理,你可以透過Bean名稱或者是Pointcut的比對,自動為符合比對條件的目標(biāo)對象建立代理對象。,問題的起源,一個應(yīng)用,在applicationContext.xml文件中, com.dn.lesson4.So
2、me dia ,問題,如果我們有兩個類實(shí)現(xiàn)同一個接口,這時需要兩個Proxy對象,applicationContext.xml文件配置, com.dn.lesson.IService logAdvice com.dn.lesson.IService logAdvice ,測試文件test.java,ApplicationContext context=new ClassPathXmlApplicationContext(applicationContext.xml); IService is=(IService)context.getBean(ProxyFactoryBean); is.exe
3、cute(); IService is1=(IService)context.getBean(ProxyFactoryBean1); is1.execute();,問題,上面所使用的代理方式是ProxyFactoryBean模式 優(yōu)點(diǎn)是采用代理的方式為每個需要的Bean在需要的時候注入切面程序 缺點(diǎn) 每個代理Bean只能為一個B ean程序服務(wù) 如果Bean很多的話,這里就需要多個代理類,解決辦法,使用Spring中的動態(tài)代理 使用org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator類 自動代理可以讓你不用為每
4、一個目標(biāo)對象手動定義代理對象 使用自動代理,你可以透過Bean名稱或者是Pointcut的比對,自動為符合比對條件的目標(biāo)對象建立代理對象。,在配置文件中注入該Bean, *Action logAdvice 不需要id屬性,因?yàn)樵谡{(diào)用時,不需要指定代理類,而是由系統(tǒng)直接匹配 有兩個屬性 beanNames : 指的是需要匹配的bean,可采用通配符 可以使用 指定需要匹配的Bean interceptorNames 已注入的 Advice實(shí)現(xiàn)類 或 Advisor 使用時:直接以Bean id獲取Bean 調(diào)用即可,比較方便。 IService is=(IService)context.getB
5、ean(loginAction); is.execute();,自動代理的優(yōu)點(diǎn),可以為多個bean應(yīng)用同一個切面 可以為多個bean應(yīng)用多個切面 在獲取時,可以不獲取代理類,可直接使用Bean 在獲取時,系統(tǒng)自動檢測該bean是否符合自動代理類的規(guī)劃,如果符合,自動應(yīng)用。,動態(tài)代理之DefaultAdvisorAutoProxyCreator方式,org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator 需要與PointcutAdvisor一起使用 可以是NameMatchMethodPointcutA
6、dvisor 也可以是RegexpMethodPointcutAdvisor 步驟 注入DefaultAdvisorAutoProxyCreator 注入相應(yīng)的PointcutAdvisor 測試文件中不需要調(diào)用代理類,在調(diào)用相應(yīng)bean時,系統(tǒng)自動匹配。,配置文件配置,pointcutAdvisror的配置 同以前,但可以不指定id execute DefaultAdvisorAutoProxyCreator的注入 ,概念辨析,技術(shù)、組件、框架和系統(tǒng),Java流行框架,大名鼎鼎的SSH,struts,Struts只是一個MVC框架(Framework),用于快速開發(fā)Java Web應(yīng)用。 S
7、truts實(shí)現(xiàn)的重點(diǎn)在C(Controller),包括ActionServlet/RequestProcessor和我們定制的Action 也為V(View)提供了一系列定制標(biāo)簽(Custom Tag)。 但Struts幾乎沒有涉及M(Model),所以Struts可以采用JAVA實(shí)現(xiàn)的任何形式的商業(yè)邏輯。,Spring,Spring是一個開源輕型容器框架(light-weight container),其核心是Bean工廠(Bean Factory),用以構(gòu)造我們所需要的M(Model)。在此基礎(chǔ)之上,Spring提供了AOP(Aspect-Oriented Programming, 面向?qū)?/p>
8、面的編程)的實(shí)現(xiàn),用它來提供非管理環(huán)境下申明方式的事務(wù)、安全等服務(wù);對Bean工廠的擴(kuò)展ApplicationContext更加方便我們實(shí)現(xiàn)J2EE的應(yīng)用;,Hibernate,它是連接 Java 應(yīng)用程序和關(guān)系數(shù)據(jù)庫的中間件。 它對 JDBC API 進(jìn)行了封裝,負(fù)責(zé)Java對象的持久化。 在分層的軟件架構(gòu)中它位于持久化層,封裝了所有數(shù)據(jù)訪問細(xì)節(jié),使業(yè)務(wù)羅基層可以專注于實(shí)現(xiàn)業(yè)務(wù)邏輯。 它是一種 ORM(Object-Relation Mapping 對象-關(guān)系映射)工具,能夠建立面向?qū)ο蟮挠蚰P秃完P(guān)系模型的映射。,回顧:三層結(jié)構(gòu),三層結(jié)構(gòu)指的是? 和.NET中三層結(jié)構(gòu)的對比,三層結(jié)構(gòu)在Jav
9、a中的應(yīng)用,分層原則 各層職責(zé)明確 上一層調(diào)下一層,Spring的Ioc控制的核心,Struts項(xiàng)目 發(fā)送請求 http:/localhost:8081/ssh/login.action 增加業(yè)務(wù)層的struts項(xiàng)目 IService IServiceImpl 在action中增加對IServiceImpl的使用 出現(xiàn)問題: ISerivceImpl與Action耦合度太強(qiáng),不易于系統(tǒng)維護(hù) 解決辦法:由Spring來進(jìn)行管理,整合點(diǎn):,讓Spring管理 Struts的Action對象,步驟,將實(shí)例化語句去除,加上get/set方法 在spring的配置文件中注入action(可以使用屬性注入
10、) 在spring的配置文件中注入impl業(yè)務(wù)實(shí)現(xiàn)類 但此時會出現(xiàn)問題?空指針異常?,原因是:,因?yàn)槲覀冊趕pring中由Ioc實(shí)例化action,但請求卻是發(fā)給struts,struts如何去spring中去取action的實(shí)例化? Struts的處理請求的方式: 請求 - Struts/RequestProcessor - 控制器 - .,解決辦法,1、加入strut2-spring-plugin*.jar文件 此文件為strut2整合spring的外在jar文件,解決的辦法:,2.在web.xml文件中增加下列代碼 contextConfigLocation /WEB-INF/class
11、es/applicationContext.xml org.springframework.web.context.ContextLoaderListener 功能:即告訴strut2,實(shí)例化action的工作不由struts2框架來做了,而是由spring的配置文件中注入了。,解決的辦法:,3。Struts.xml文件 /success.jsp /login2.jsp /login2.jsp ,解決的辦法:,applicationContext.xml文件 ,注意:bean中的id應(yīng)該與 struts.xml文件中action的 class屬生匹配,建議,applicationContext.xml文件 ,再次發(fā)送請求,http:/localhost:8081/ssh/lo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- AI技術(shù)在制造業(yè)應(yīng)用實(shí)例
- 廢塑料加工處理工崗前基礎(chǔ)理論考核試卷含答案
- 產(chǎn)品創(chuàng)意考試題及答案
- 焦?fàn)t煤氣冷凝凈化工操作能力評優(yōu)考核試卷含答案
- 藥物合成反應(yīng)工風(fēng)險評估知識考核試卷含答案
- 城市軌道交通車場調(diào)度員安全行為測試考核試卷含答案
- 陶瓷燒成工常識評優(yōu)考核試卷含答案
- 鏈輪制造工創(chuàng)新應(yīng)用測試考核試卷含答案
- 熱工試驗(yàn)工崗前技能綜合實(shí)踐考核試卷含答案
- 汽輪機(jī)轉(zhuǎn)子裝配調(diào)試工標(biāo)準(zhǔn)化測試考核試卷含答案
- 1輸變電工程施工質(zhì)量驗(yàn)收統(tǒng)一表式(線路工程)-2024年版
- 陜西省建筑場地墓坑探查與處理技術(shù)規(guī)程
- 2022-2023學(xué)年四川省樂山市市中區(qū)外研版(三起)六年級上冊期末測試英語試卷(含聽力音頻)
- 滕州菜煎餅創(chuàng)新創(chuàng)業(yè)計(jì)劃書
- 2024北京朝陽區(qū)初一(上)期末道法試卷及答案
- 假體隆胸后查房課件
- 送貨單格式模板
- GB/T 42430-2023血液、尿液中乙醇、甲醇、正丙醇、丙酮、異丙醇和正丁醇檢驗(yàn)
- 關(guān)于地方儲備糧輪換業(yè)務(wù)會計(jì)核算處理辦法的探討
- 上海農(nóng)貿(mào)場病媒生物防制工作標(biāo)準(zhǔn)
- YY 0334-2002硅橡膠外科植入物通用要求
評論
0/150
提交評論