JAVA培訓(xùn)系列之第十一次培訓(xùn) Spring 入門.ppt_第1頁
JAVA培訓(xùn)系列之第十一次培訓(xùn) Spring 入門.ppt_第2頁
JAVA培訓(xùn)系列之第十一次培訓(xùn) Spring 入門.ppt_第3頁
JAVA培訓(xùn)系列之第十一次培訓(xùn) Spring 入門.ppt_第4頁
JAVA培訓(xùn)系列之第十一次培訓(xùn) Spring 入門.ppt_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1,Spring入門,2020年7月26日,王云海,2,提 綱,3,Spring概述,Spring提供了一個(gè)輕量級的容器,用于提供集中式、自動(dòng)化的配置和編寫應(yīng)用程序?qū)ο蟆T撊萜魇欠乔秩胄缘?,能夠以一種一致而透明的方式,通過IoC把一組松散耦合的組件(POJO)組裝為一個(gè)復(fù)雜的系統(tǒng)。因?yàn)樵撊萜髟试S首先獨(dú)立地開發(fā)和測試各軟件組件,然后在任意環(huán)境(J2SE或J2EE)中進(jìn)行擴(kuò)展部署,所以它具有靈活性和高利用率,并提高了應(yīng)用程序的可測試性和可伸縮性。 Spring使用了很多被實(shí)踐證明的最佳實(shí)踐和正規(guī)的設(shè)計(jì)模式,并且進(jìn)行了編碼實(shí)現(xiàn) Spring的IoC控件主要專注于如何利用classes、對象和服務(wù)去組

2、成一個(gè)企業(yè)級應(yīng)用,通過規(guī)范的方式,將各種不同的控件整合成一個(gè)完整的應(yīng)用,Spring作用,4,Spring概述,一個(gè)用于事務(wù)管理的通用抽象層:支持可插入的事務(wù)管理器,并使得劃分事務(wù)更加容易,同時(shí)無需處理底層的問題。該層中還包括JTA策略和一個(gè)JDBC DataSource。與普通的JTA或EJB CMT不同,Spring的事務(wù)支持并不依賴于J2EE環(huán)境。 一個(gè)JDBC抽象層:提供一種很有意義的異常層次結(jié)構(gòu)(不用把供應(yīng)商代碼從SQLException中抽取出來),簡化了錯(cuò)誤處理,而且大大減少了必須編寫的代碼數(shù)量。不再需要編寫另一個(gè)finally塊來再次使用JCBC。面向JDBC的異常符合Spri

3、ng的一般DAO異常層次結(jié)構(gòu)。 與行業(yè)領(lǐng)先的對象-關(guān)系映射解決方案的集成:主要在資源管理、DAO實(shí)現(xiàn)支持和事務(wù)策略等方面。Spring對大量IoC方便特性的一流支持,解決了許多典型的O-R映射集成問題。所有這些都符合Spring的一般事務(wù)和DAO異常層次結(jié)構(gòu)。 AOP功能:完全集成到Spring配置管理中。您可以對Spring所管理的任何對象啟用AOP,添加像聲明性事務(wù)管理這樣的方面。借助于Spring,您可以擁有沒有EJB的聲明性事務(wù)管理甚至也可以沒有JTA。 一個(gè)靈活的MVC Web應(yīng)用框架:構(gòu)建在核心的Spring功能之上。該框架是高度可配置的(通過策略接口),并能適用多種視圖技術(shù),比如

4、JSP、Velocity、Tiles、iTexth和POI。注意,Spring中間層可以很容易地與基于其他任何Web MVC框架(如:Struts、WebWork或Tapestry)的Web層結(jié)合在一起。,Spring優(yōu)點(diǎn),5,Spring概述,Spring功能模塊,Core:框架的最基礎(chǔ)部分,提供IoC和依賴注入特性,DAO:提供了JDBC的抽象層、對所有的POJO都適用的聲明性事務(wù)管理方法,ORM:提供了常用的“對象/關(guān)系”映射APIs的集成層,包括JPA、JDO、Hibernate和iBatis,AOP:提供了符合 AOP Alliance規(guī)范的面向方面的編程(aspect-orient

5、ed programming)實(shí)現(xiàn),可以定義方法攔截器(method-interceptors)和切點(diǎn)(pointcuts),Web:提供了基礎(chǔ)的針對Web開發(fā)的集成特性,使Spring可與其他框架結(jié)合,6,Spring概述,2005年12月 在佛羅里達(dá)召開的Spring經(jīng)驗(yàn)交流會上,Spring 2.0 問世 2007年11月 最新版本 Spring 2.5 final,Spring版本,7,提 綱,8,Spring核心,Spring以bean方式管理所有的組件 Spring負(fù)責(zé)創(chuàng)建bean實(shí)例,注入依賴關(guān)系,并管理器生命周期 bean定義通常使用XML配置文件 BeanFactory作為生

6、產(chǎn)bean實(shí)例的簡單工廠,集中管理bean的實(shí)例化。 bean實(shí)例可以通過BeanFactory的getBean(String beanId)方法得到。 大部門J2EE應(yīng)用里,BeanFactory的實(shí)例化會隨著應(yīng)用的啟動(dòng)自動(dòng)加載,bean簡介,/以beans.xml配置文件為參數(shù),創(chuàng)建文件輸入流 InputStream is = new FileInputStream(“beans.xml”); /根據(jù)指定的文件輸入流is,創(chuàng)建Resource對象 InputStreamResource isr = new InputStreamResource(is); /以Resource對象isr為參

7、數(shù),創(chuàng)建BeanFactory的實(shí)例 XmlBeanFactory factory = new XmlBeanFactory(isr); /獲取bean實(shí)例 SqlMapAccountDao dao = (SqlMapAccountDao)factory.get(“accountDao”);,beans.xml文件: ,9,Spring核心,全限定類名、bean行為的定義、 bean構(gòu)造器參數(shù)和屬性值、bean之間的依賴關(guān)系 別名alias: IoC容器既可以管理JavaBean(具有默認(rèn)的無參數(shù)構(gòu)造函數(shù)和getter、setter方法),也可以管理非bean形式的類,Bean 定義文件,be

8、ans.xml文件: ,10,Spring核心,使用靜態(tài)工廠方法實(shí)例化: /createCust必須是靜態(tài)方法 使用實(shí)例工廠方法實(shí)例化: /createCust是非靜態(tài)方法,package com.zjhcsoft.service; public class StaticFactoryBean public static CustBean createCust(String name) return new CustBean(name); ,package com.zjhcsoft.service; public class InstanceFacotryBean public CustBea

9、n createCust(String name) return new CustBean(name); ,11,Spring核心,注入方式: setter注入和構(gòu)造器注入 Bean依賴接受如下的元素指定值: value,ref,bean,list,set,map,props 預(yù)防構(gòu)造器注入時(shí)的循環(huán)依賴: A類通過構(gòu)造器注入B類,B類又通過構(gòu)造器注入A類 idref: /someBean必須是id /someBean必須是id ref : /someBean可以是id也可以是name /someBean必須是id /someBean可以是id也可以是name 內(nèi)部bean總是匿名和protot

10、ype的,所以會忽略singleton標(biāo)記和id或者name屬性 ,依賴注入, 310000 , 學(xué)軍中學(xué) 浙江大學(xué) 90 80 175 70 ,12,Spring核心,Singleton:在每個(gè)Spring IoC容器中一個(gè)bean定義對應(yīng)一個(gè)對象實(shí)例。 Prototype:一個(gè)bean定義對應(yīng)多個(gè)對象實(shí)例。 Request:在一次HTTP請求中,一個(gè)bean定義對應(yīng)一個(gè)實(shí)例,即每次HTTP請求將會有各自的bean實(shí)例,它們依據(jù)某個(gè)bean定義創(chuàng)建而成。該作用域僅在基于web的Spring ApplicationContext情形下有效。 Session:在一個(gè)HTTP session中,一

11、個(gè)bean對應(yīng)一個(gè)實(shí)例。該作用域僅在基于web的Spring ApplicationContext情形下有效。 Global session:在一個(gè)全局的HTTP session中,一個(gè)bean定義對應(yīng)一個(gè)實(shí)例,僅在使用portlet context的時(shí)候有效。該作用域僅在基于web的Spring ApplicationContext情形下有效。,Bean作用域, ,13,Spring核心,如果你在bean定義文件中引用“spring-beans.dtd”,你必須使用“singleton”屬性來顯示說明bean的生命周期作用域(singleton是默認(rèn)的生命周期作用域)。 如果你引用的是“sp

12、ring-beans-2.0.dtd”或者是Spring 2.0 XSD schema,那么你需要使用“scope”屬性(因?yàn)椤皊ingleton”屬性被刪除了,新的DTD和XSD文件使用的是“scope”屬性)。 簡單地說:如果你用“singleton”屬性,那么就必須在那個(gè)文件里引用“spring-beans.dtd”。如果你用“scope”屬性,那么就必須在那個(gè)文件里引用“spring-beans-2.0.dtd”或者“spring-beans-2.0.xsd”。,向后兼容性:在XML中指定生命周期作用域,14,Spring核心,ApplicationContext是BeanFactor

13、y的擴(kuò)展,通常以聲明的方式創(chuàng)建 ApplicationContext擴(kuò)展了MessageSource接口,提供國際化的消息訪問 資源訪問,如URL和文件 事件傳播,實(shí)現(xiàn)了ApplicationListner接口的bean 載入多個(gè)(有繼承關(guān)系的)上下文,使得每個(gè)上下文都專注于一個(gè)特定層次,比如應(yīng)用的web層、dao層分開,ApplicationContext, contextConfigLocation /WEB-INF/daoContext.xml /WEB-INF/applicationContext.xml org.springframework.web.context.ContextL

14、oaderListener , contextConfigLocation /WEB-INF/daoContext.xml /WEB-INF/applicationContext.xml context org.springframework.web.context.ContextLoaderServlet 1 ,ApplicationContext ctx = new ClassPathXmlApplicationContext(“applicationContext.xml”); ApplicationContext ctx = new ClassPathXmlApplicationCon

15、text( new String“services.xml”, “daos.xml”, MessageService.class ); ApplicationContext ctx = new ClassPathXmlApplicationContext(“classpath:beans.xml”); ApplicationContext ctx = new ClassPathXmlApplicationContext(“classpath*:beans.xml”); ApplicationContext ctx = new FileSystemClassPathXmlApplicationC

16、ontext(“file:beans.xml”);,15,Spring核心,OOP是靜態(tài)的抽象,它對應(yīng)用中實(shí)體及其屬性、行為進(jìn)行抽象,從而獲得清晰高效的單元?jiǎng)澐帧?AOP是動(dòng)態(tài)的抽象,它對應(yīng)用執(zhí)行過程的步驟進(jìn)行抽象,從而獲得步驟之間的邏輯劃分。 AOP具有兩個(gè)特征:各步驟之間的良好隔離性,源代碼無關(guān)性 Spring默認(rèn)使用JDK動(dòng)態(tài)代理來實(shí)現(xiàn)AOP代理(主要用于代理接口),也可以使用CGLIB代理(為沒有實(shí)現(xiàn)接口的類進(jìn)行代理)。 Spring目前支持?jǐn)r截方法調(diào)用,成員變量攔截器沒有實(shí)現(xiàn)。 Spring的AOP實(shí)現(xiàn)是基于代理的AOP框架,與AspectJ或者AspectWerkz互為補(bǔ)充。,面向

17、切面編程(AOP),16,Spring核心,此次培訓(xùn)不細(xì)講事務(wù)管理和AOP,Spring的事務(wù)管理,17,提 綱,18,中間層數(shù)據(jù)訪問,Spring提供的DAO(數(shù)據(jù)訪問對象)支持主要的目的是便于以標(biāo)準(zhǔn)的方式使用不同的數(shù)據(jù)訪問技術(shù),如JDBC、Hibernate或者JDO等。 Spring提供的DAO支持可以讓你方便地在不同的持久化技術(shù)之間切換,并且讓你在編碼的時(shí)候不用考慮處理各種技術(shù)中特定的異常。 Spring DAO提供了一致的異常層次: 以DataAccessException為根的異常層次 Spring DAO提供了一致的DAO支持抽象類: JdbcDaoSupport:JDBC數(shù)據(jù)訪

18、問對象的基類 HibernateDaoSupport: Hibernate數(shù)據(jù)訪問對象的基類 JdoDaoSupport: JDO數(shù)據(jù)訪問對象的基類 JpaDaoSupport: JPA數(shù)據(jù)訪問對象的基類,DAO支持,19,中間層數(shù)據(jù)訪問,Spring在資源管理、DAO實(shí)現(xiàn)支持以及事務(wù)策略等方面提供了與Hibernate、JDO、Oracle TopLink、iBATIS SQL Mappings 以及 JPA 的集成。 使用Spring構(gòu)建 O/R Mapping DAO的好處: 測試簡單 封裝異常 通用的資源管理 綜合的事務(wù)管理 避免綁定特定技術(shù),使用ORM工具進(jìn)行數(shù)據(jù)訪問,20,提 綱,21,Web層,Spring的web框架是圍繞DispatcherServlet來進(jìn)行設(shè)計(jì)的。 Spring的web框架包括可配置的處理器映射(handler)、視圖解析(view)、 本地化解析(loc

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論