版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Spring第二Spring第二Spring的作用?ioc、iocdi區(qū)別(對(duì)象生成被反轉(zhuǎn)了BeanFactory和FactoryBean整體課程安排(32第一天:Spring框架入門、IoC控制反轉(zhuǎn)的配置管理、SpringWeb集成、SpringJunit集成。第二天:SpringAOP面向切面編程、AspectJ的集成配置、JdbcTemplate工具類。第四天、第五天:綜合練習(xí):SSH整合開發(fā)、jQueryAjax今天的主要內(nèi)容(AOPAOP面向切面編程的相關(guān)概念(思想、原理、相關(guān)術(shù)語(yǔ)AOP編程底層實(shí)現(xiàn)機(jī)制(JDK代理、Cglib代理SpringAspectJAOP編程(XML和注解1.AOP1.1.什么是AOPAOP(AspectOrientedPrograming)【擴(kuò)展了解】AOPOOP(面向?qū)ο缶幊蹋∣bjectOrientedProgramming,OOP程序設(shè)計(jì))是一種計(jì)算機(jī)編程架構(gòu))代理對(duì)象,調(diào)用增強(qiáng)功能的代碼,從而對(duì)原有業(yè)務(wù)方法進(jìn)行增強(qiáng)!1.2.AOP的應(yīng)用代理對(duì)象,調(diào)用增強(qiáng)功能的代碼,從而對(duì)原有業(yè)務(wù)方法進(jìn)行增強(qiáng)!1.2.AOP的應(yīng)用緩存優(yōu)化直接從內(nèi)存對(duì)象返回,不需要查詢數(shù)據(jù)庫(kù)(1.3.SpringAOP編程兩種Spring1.2開始支持AOP編程(傳統(tǒng)SpringAOP編程,編程非常復(fù) 更好學(xué)SpringAOPSpring2.0AOP框架AOPSpring2.0AOP框架AOP--AspectAdvice2. 編程底層實(shí)現(xiàn)機(jī)制(了解AOPSpringAOPJDK2. 編程底層實(shí)現(xiàn)機(jī)制(了解AOPSpringAOPJDKCGLIB動(dòng)態(tài)代理:在虛擬機(jī)內(nèi)部,運(yùn)行的時(shí)候,動(dòng)態(tài)生成代理類(運(yùn)行時(shí)生成,runtime生成)Proxy$$(例如:struts2Action2.1.JDK動(dòng)態(tài)代1InvocationHandlerProxynewProxyInstance3InvocationHandlerinvokepublicclassJdkProxyFactoryimplementspublicclassJdkProxyFactoryimplementsprivateObjectpublicJdkProxyFactory(Objecttarget)this.target=}/*publicObjectgetProxyObject(finalObjecttarget){returntarget.getClass().getInterfaces(),newInvocationHandler(){publicObjectinvoke(Objectproxy,Methodmethod,Object[]args)throwsThrowableObjectobject=method.invoke(target,return}//privatepublicObjecttarget.getClass().getInterfaces(),this);publicvoidpublicvoidCustomerServicetarget=newCustomerServiceproxy=(CustomerService)}publicObjectinvoke(Objectproxy,Methodmethod,Object[]throwsThrowableObjectobjectmethod.invoke(target,args);//調(diào)用目標(biāo)對(duì)System.out.println("日志記錄完成。。。。return}privatevoidSystem.out.println("開始記錄日志了。。。。}}(如果沒有接口,則不能使用2.2.Cglib動(dòng)態(tài)代(如果沒有接口,則不能使用2.2.Cglib動(dòng)態(tài)代什么是cglib?碼。method.invoke(target,args)用來執(zhí)行調(diào)用目標(biāo)對(duì)象原來的方法。}//CGLIB代理工廠,動(dòng)態(tài)的對(duì)目標(biāo)生成代理對(duì)publicclassCglibProxyFactoryimplementsprivateObjectpublicCglibProxyFactory(Objecttarget)this.target=}publicObjectEnhancerenhancer=new return}publicclassProductServicepublicvoidSystem.out.println("業(yè)務(wù)層產(chǎn)品保存。。}public產(chǎn)品查詢。。");return10;}}publicvoidpublicvoid//確定目標(biāo)ProductServicetarget=newCglibProxyFactorycglibProxyFactory=publicObjectintercept(Objectproxy,Methodmethod,Object[]args,MethodProxymethodProxy)throwsThrowableSystem.out.println("記錄日志了。。。。。。} returnmethod.invoke(target,returnmethodProxy.invokeSuper(proxy,}}2.3.代理知識(shí)小122.3.代理知識(shí)小12SpringAOP(Jdk動(dòng)態(tài)代理SpringAOP1.2AOP1(target)2Advice(增強(qiáng)代碼CustomerServiceProductServicetarget} 必須實(shí)現(xiàn)對(duì)應(yīng)的接口(4+2(Spring測(cè)試集成1個(gè)SpringAOP4(2對(duì):AOPAspectjaop 配置切入點(diǎn)和切 配置切入點(diǎn)和切<beansxmlns="http:///schema/beans"bean(beanId/beanbean(customerService)bean(beanId/beanbean(customerService)CustomerService..))..))this對(duì)代理對(duì)象有效,target對(duì)代理對(duì)象無(wú)效(只對(duì)目標(biāo)對(duì)象有效)對(duì)象有效AspectJ切面編程AspectJ切面編程Spring1.2AOP---編寫通知(通知需要實(shí)現(xiàn)一個(gè)接口配ProxyFactoryBean生成代理對(duì)象配置非常復(fù)雜,spring2.0AspectJAOP AspectJAdvice類SpringAOP AspectJAdvice類SpringAOPAfter(finally第二部:通知(編寫 (包括切入點(diǎn)BeforeAdvice 配置切入點(diǎn)和切 配置切入點(diǎn)和切 分析各種通知應(yīng) 分析各種通知應(yīng) Before前置通(權(quán)限不足,拋出異常aspectjAfterReturing后置Around環(huán)繞通Around環(huán)繞通增強(qiáng)代碼的方法要返回值:Object返回值A(chǔ)fterThrowing拋出通作用:目標(biāo)代碼出現(xiàn)異常,通知執(zhí)行。記錄異常日志、通知管理員(短信、郵件After最終通After最終通(tryObjectresult=}4.3.6.Advice方法可接tryObjectresult=}4.3.6.Advice方法可接收的參數(shù)和返回值小結(jié)(參考publicreturnTypemethodpublic( @Aspectj注解5.1.搭建環(huán)webspring3_day2_annotation,jar包(11個(gè)applicationContext.xml,pertiesthrowsAfter5.2.第一步編寫目5.2.第一步編寫目標(biāo)對(duì)象5.3.第二步編寫通知,5.3.第二步編寫通知,配置切@Component2)代理(jdk代理(jdk動(dòng)態(tài)代理??梢允褂妙惔恚╟glib動(dòng)態(tài)代理proxy-target-class 可以使用類代理(cglib動(dòng)態(tài)代理proxy-target-class 使用@Pointcut定義切使用注解單獨(dú)定義切入點(diǎn)切點(diǎn)方法:privatevoid SpringJdbcTemplate是一個(gè)模板工具類,簡(jiǎn)化JdbcApacheDbUtilsJdbcTemplatejdbcHibernateTemplateHibernate JdbcTemplate快速入web JdbcTemplate快速入webJDBC模版開發(fā)包數(shù)據(jù)庫(kù)驅(qū)動(dòng)第二步: 通過 配 通過 配置創(chuàng)建 (多種數(shù)據(jù)源 Spring內(nèi)置數(shù)據(jù) ApacheDBCP連接池配Apachecommons-dbcpdbcppoolC3P0連接池配C3P0連接池配(重點(diǎn)6.2.4.TomcatJNDI連接池配置和JNDIJava命名與目錄接口(JavaNamingandDirectoryserver.xml、context.xml、工程/META-INF/context.xml(只對(duì)當(dāng)前工程生效提示:該文件可以從\提示:該文件可以從\一定注意:COracle將tomcat/libtomcat/lib 外部屬性文件的配propertiessrc<context:property-placeholder>通過${key} JdbcTemplate JdbcTemplate!源代碼分析JdbcDaoSupport: 實(shí)現(xiàn)增加、刪除、修改功 簡(jiǎn)單返回值的查 簡(jiǎn)單返回值的查 復(fù)雜對(duì)象返回的查queryForInt(Stringsql,Object...QuerygivenSQLtocreateapreparedstatementfromSQLandalistofargumentstobindtothequery,resultinginanint<T>queryForObject(Stringsql,Class<T>requiredType,Object...QuerygivenSQLtocreateapreparedstatementfromSQLandalistofargumentstobindtothequery,expectingaresultupdate(Stringsql,Object...IssueasingleSQLupdateoperation(suchasaninsert,updateordeletestatement)viaapreparedstatement,bindingthegiven<T>query(Stringsql,RowMapper<T><T>query(Stringsql,RowMapper<T>rowMapper,Object...QuerygivenSQLtocreateapreparedstatementfromSQLandalistofargumentstobindtothequery,mappingeachrowtoaJavaobjectviaaRowMapper.<T>queryForObject(Stringsql,RowMapper<T>rowMapper,Object...QuerygivenSQLtocreateapreparedstatementfromSQLandalistofargumentstobindtothequery,mappingasingleresultrowtoaJavaobjectviaaRowMapper.2SpringAOP(3AspectJAOP
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 群文閱讀寓言的事與理說課稿2024-2025學(xué)年統(tǒng)編版語(yǔ)文八年級(jí)上冊(cè)
- 25《少年閏土》說課稿-2024-2025學(xué)年語(yǔ)文六年級(jí)上冊(cè)統(tǒng)編版
- 第二單元 3 公民意味著什么2023-2024學(xué)年六年級(jí)上冊(cè)道德與法治同步說課稿(部編版)
- 好玩的手影游戲 (說課稿)-2024-2025學(xué)年一年級(jí)上冊(cè)綜合實(shí)踐活動(dòng)山東科學(xué)技術(shù)版
- 2025年建筑項(xiàng)目采購(gòu)合同6篇
- 第八章第三節(jié)摩擦力第一課時(shí)說課稿 -2023-2024學(xué)年人教版物理八年級(jí)下冊(cè)
- 人教版歷史與社會(huì)八年級(jí)下冊(cè)第五單元第一課第三框《農(nóng)耕文明的繁盛》說課稿
- 第一單元第4課《身邊的信息系統(tǒng)》說課稿 2023-2024學(xué)年浙教版(2020)初中信息技術(shù)七年級(jí)上冊(cè)
- 第6單元 習(xí)作:這兒真美 名師版2024-2025學(xué)年三年級(jí)語(yǔ)文上冊(cè)同步說課稿(統(tǒng)編版)
- 二手房交易規(guī)范合同范本2024版B版
- 《道路車輛 48V供電電壓的電氣及電子部件 電性能要求和試驗(yàn)方法》文本以及編制說明
- 十八項(xiàng)醫(yī)療核心制度考試題與答案
- 2024年鄂爾多斯市國(guó)資產(chǎn)投資控股集團(tuán)限公司招聘管理單位遴選500模擬題附帶答案詳解
- 篝火晚會(huì)流程
- 船形烏頭提取工藝優(yōu)化
- 財(cái)務(wù)總監(jiān)個(gè)人述職報(bào)告
- 居家養(yǎng)老護(hù)理人員培訓(xùn)方案
- 江蘇省無(wú)錫市2024年中考語(yǔ)文試卷【附答案】
- 管理者的九大財(cái)務(wù)思維
- 四年級(jí)上冊(cè)數(shù)學(xué)應(yīng)用題練習(xí)100題附答案
- 2024年度中國(guó)電建集團(tuán)北京勘測(cè)設(shè)計(jì)研究院限公司校園招聘高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
評(píng)論
0/150
提交評(píng)論