Java Web程序設(shè)計(慕課版 第3版)-基于SSM 課件 第11章 Spring框架_第1頁
Java Web程序設(shè)計(慕課版 第3版)-基于SSM 課件 第11章 Spring框架_第2頁
Java Web程序設(shè)計(慕課版 第3版)-基于SSM 課件 第11章 Spring框架_第3頁
Java Web程序設(shè)計(慕課版 第3版)-基于SSM 課件 第11章 Spring框架_第4頁
Java Web程序設(shè)計(慕課版 第3版)-基于SSM 課件 第11章 Spring框架_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第11章Spring框架01Spring概述02SpringIoC03AOP概述04Spring的切入點(diǎn)05Aspect對AOP的支持06Spring持久化1

Spring概述Spring組成Spring的配置結(jié)構(gòu)使用BeanFactory管理BeanApllicationContext接口1.ClassPathXmlApplicationContext類從當(dāng)前類路徑中檢索配置文件并加載來創(chuàng)建容器的實(shí)例,其語法格式如下:ApplicationContextcontext=newClassPathXmlApplicationContext(StringconfigLocation);configLocation參數(shù)指定Spring配置文件的名稱和位置。2.FileSystemXmlApplicationContext類該類不從類路徑中獲取配置文件,而是通過參數(shù)指定配置文件的位置。它可以獲取類路徑之外的資源,其語法格式如下:ApplicationContextcontext=newFileSystemXmlApplicationContext(StringconfigLocation);3.WebApplicationContext類WebApplicationContext是Spring的Web應(yīng)用容器,在Servlet中使用該類的方法一是在Servlet的web.xml文件中配置Spring的ContextLoaderListener監(jiān)聽器;二是修改web.xml配置文件,在其中添加一個Servlet,定義使用Spring的org.springframework.web.context.ContextLoaderServlet類。2

SpringIoC控制反轉(zhuǎn)與依賴注入什么是依賴注入?IoC將創(chuàng)建實(shí)例的任務(wù)交給IoC容器,這樣開發(fā)應(yīng)用代碼時只需要直接使用類的實(shí)例,這就是IoC控制反轉(zhuǎn),即“依賴注入”依賴注入的3種實(shí)現(xiàn)類型接口注入Setter注入構(gòu)造器注入配置Bean要在SpringIoC容器中獲取一個bean,首先要在配置文件中的<beans>元素中配置一個子元素<bean>,Spring的控制反轉(zhuǎn)機(jī)制會根據(jù)<bean>元素的配置來實(shí)例化這個bean實(shí)例。<beanid="test"class="com.mr.Test"/>Setter注入publicclassUser{privateStringname;//用戶姓名privateIntegerage;//年齡privateStringsex;//性別……//省略的Setter和Getter方法}<!--UserBean--><beanname="user"class="com.mr.user.User"><propertyname="name"><value>無語</value></property><propertyname="age"><value>30</value></property><propertyname="sex"><value>女</value></property></bean>在上面的代碼中,<value>標(biāo)簽用于為name屬性賦值,這是一個普通的賦值標(biāo)簽。直接在成對的<value>標(biāo)簽中放入數(shù)值或其他賦值標(biāo)簽,Spring會把這個標(biāo)簽提供的屬性值注入到指定的JavaBean中。構(gòu)造器注入//構(gòu)造方法publicUser(Stringname,Integerage,Stringsex){=name;this.age=age;this.sex=sex;}<!--UserBean--><beanname="user"class="com.mr.user.User"><constructor-arg><value>無語</value></constructor-arg><constructor-arg><value>30</value></constructor-arg><constructor-arg><value>女</value></constructor-arg></bean>在類被實(shí)例化時其構(gòu)造方法被調(diào)用并且只能調(diào)用一次,所以構(gòu)造器被常用于類的初始化操作。<constructor-arg>是<bean>元素的子元素,通過<constructor-arg>元素的<value>子元素可以為構(gòu)造方法傳參。引用其他Bean和創(chuàng)建匿名內(nèi)部JavaBean<beanname="/main.do"class="com.mr.main.Manager"><propertyname="user"><reflocal="user"/></property></bean><beanid="school"class="School"><propertyname="student"><beanclass="Student"/></property></bean>引用其他Bean創(chuàng)建匿名內(nèi)部JavaBean3

AOP概述什么是AOP?AspectOrientedProgramming,即面向切面編程。切面是對象操作過程中的截面AOP術(shù)語切入點(diǎn)是連接點(diǎn)的集合對象操作過程中的某個階段點(diǎn)通知是某個切入點(diǎn)被橫切后所采取的處理邏輯,即在“切入點(diǎn)”處攔截程序后通過通知來執(zhí)行切面4

Spring的切入點(diǎn)靜態(tài)與動態(tài)切入點(diǎn)靜態(tài)切入點(diǎn)動態(tài)切入點(diǎn)靜態(tài)切入點(diǎn)可以為對象的方法簽名,如在某個對象中調(diào)用了execute()方法時,這個方法即靜態(tài)切入點(diǎn)靜態(tài)切入點(diǎn)只能應(yīng)用在相對不變的位置,而動態(tài)切入點(diǎn)可應(yīng)用在相對變化的位置,如方法的參數(shù)上。深入靜態(tài)切入點(diǎn)靜態(tài)切入點(diǎn)在某個方法名上織入切面,所以在織入程序代碼前要匹配方法名,即判斷當(dāng)前正在調(diào)用的方法是不是已經(jīng)定義的靜態(tài)切入點(diǎn)。如果是,說明方法匹配成功并織入切面;否則匹配失敗,不織入切面。<!--深入靜態(tài)切入點(diǎn)--><beanid="pointcutAdvisor"class="org.springframework.aop.support.RegexpMethodPointcutAdvisor"><propertyname="patterns"><list><value>.*execute.*</value><!--指定切入點(diǎn)--></list></property></bean>publicbooleanmatches(Methodmethod,ClasstargetClass){return(method.getName().equals("execute"));//匹配切入點(diǎn)成功}Spring中的其他切入點(diǎn)切入點(diǎn)實(shí)現(xiàn)類說

明org.springframework.aop.support.JdkRegexpMethodPointcutJDK正則表達(dá)式方法切入點(diǎn)org.springframework.aop.support.NameMatchMethodPointcut名稱匹配器方法切入點(diǎn)org.springframework.aop.support.StaticMethodMatcherPointcut靜態(tài)方法匹配器切入點(diǎn)org.springframework.aop.support.ControlFlowPointcut流程切入點(diǎn)org.springframework.aop.support.DynamicMethodMatcherPointcut動態(tài)方法匹配器切入點(diǎn)5

Aspect對AOP的支持Aspect概述Aspect即Spring中所說的切面,它是對象操作過程中的截面.AspectJ是Spring框架2.0版本之后增加的新特性,Spring使用了AspectJ提供的一個庫來完成切入點(diǎn)的解析和匹配。但是AOP在運(yùn)行時仍舊是純粹的SpringAOP,它并不依賴于AspectJ的編譯器或者織入器,在底層中使用的仍然是Spring2.0之前的實(shí)現(xiàn)體系。Spring中的AspectDefaultPointcutAdvisor切入點(diǎn)配置器DefaultPointcutAdvisor位于org.springframework.aop.support.DefaultPointcutAdvisor包下的默認(rèn)切入點(diǎn)通知者,它可以把一個通知配給一個切入點(diǎn),使用之前首先要創(chuàng)建一個切入點(diǎn)和通知。創(chuàng)建通知publicTestAdviceimplementsMethodInterceptor{publicObjectinvoke(MethodInvocationmi)throwsThrowable{ObjectVal=ceed();returnVal;}}創(chuàng)建切入點(diǎn)publicclassTestStaticPointcutextendsStaticMethodMatcherPointcut{publicbooleanmatches(MethodmethodClasstargetClass){return(“targetMethod”.equals(method.getName()));}publicClassFiltergetClassFilter(){returnnewClassFilter(){publicbooleanmatches(Classclazz){return(clazz==targetClass.class);}};}}6

Spring持久化DAO模式Spring提供了一套抽象的DAO類供開發(fā)人員擴(kuò)展,這有利于以統(tǒng)一的方式操作各種DAO技術(shù),DAO模式JdbcDaoSupportHibernateDAO抽象類,開發(fā)人員需要為其配置HibernateSessionFactory,通過其子類能夠獲得Hibernate實(shí)現(xiàn)HibernateDaoSupportHibernateDAO抽象類,開發(fā)人員需要為其配置HibernateSessionFactory,通過其子類能夠獲得Hibernate實(shí)現(xiàn)。JdoDaoSupportSpring為JDO提供的DAO抽象類,開發(fā)人員需要為它配置PersistenceManagerFactory,通過其子類能夠獲得JdoTemplate。事務(wù)管理Spring中的事務(wù)基于AOP實(shí)現(xiàn),而Spring的AOP以方法為單位,所以Spring的事務(wù)屬性是對事務(wù)應(yīng)用的方法的策略描述。這些屬性為傳播行為、隔離級別、只讀和超時屬性。編程式事務(wù)管理在Spring中主要有兩種編程式事務(wù)的實(shí)現(xiàn)方法,分別使用PlatformTransactionManager接口的事務(wù)管理器或TransactionTemplate實(shí)現(xiàn)。二者各有優(yōu)缺點(diǎn),推薦使用后者實(shí)現(xiàn)方式,因其符合Spring的模板模式。聲明式事務(wù)管理聲明式事務(wù)不涉及組建依賴關(guān)系,它通過AOP實(shí)現(xiàn)事務(wù)管理,在使用聲明式事務(wù)時不須編寫任何代碼即可通過實(shí)現(xiàn)基于容器的事務(wù)管理。Spring提供了一些可供選擇的輔助類,它們簡化了傳統(tǒng)的數(shù)據(jù)庫操作流程。在一定程度上節(jié)省了工作量,提高了編碼效率,所以推薦使用聲明式事務(wù)。應(yīng)用JdbcTemplate操作數(shù)據(jù)庫方法名稱說

明intQueryForInt(Stringsql)返回查詢的數(shù)量,通常是聚合函數(shù)數(shù)值intQueryForInt(Stringsql,Object[]args)longQueryForLong(Stringsql)返回查詢的信息數(shù)量longQueryForLong(Stringsql,Object[]args)ObjectqueryforObject(stringsql,ClassrequiredType)返回滿足條件的查詢對象ObjectqueryforObject(stringsql,ClassrequiredType,Object[]args)ListqueryForList(Stringsql)返回滿足條件的對象List集合ListqueryForList(Stringsql,Object[]args)JdbcTemplate類是Spring的核心類之一,可以在org.springframework.jdbc.core包中找到。該類在內(nèi)部已經(jīng)處理數(shù)據(jù)庫資源的建立和釋放,并可以避免一些常見的錯誤,如關(guān)閉連接及拋出異常等,因此使用JdbcTemplate類簡化了編寫JDBC時所需的基礎(chǔ)代碼。與Hibernate整合在Spring中整合Hibernate4時,已經(jīng)不再提供HibenateTemplate和HibernateDaoSupport類了,而只有一個稱為LocalSessionFactoryBean的SessionFactoryBean,通過它可以實(shí)現(xiàn)基于注解或是XML文件來配置映射文件。與Hibernate整合#數(shù)據(jù)庫驅(qū)動hibernate.connection.driver_class=com.mysql.jdbc.Driver#數(shù)據(jù)庫連接的URLhibernate.connection.url=jdbc:mysql://localhost:3306/test#用戶名hibernate.connection.username=root#密碼hibernate.connection.password=123456與Hibernate整合<!--引入配置文件--><bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <propertyname="locations"> <value>classpath:perties</value> </property></bean><beanid="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <propertyname="driverClassName"value="${hibernate.connection.driver_class}"/> <propertyname="url"value="${hibernate.connection.url}"/> <propertyname="username"value="${hibernate.connection.username}"/> <propertyname="password"value="${hibernate.connection.password}"/></bean>引入perties文件并配置數(shù)據(jù)源dataSource與Hibernate整合<beanid="sessionFactory" class="org.springframework.orm.hibernat

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論