給java視頻-就業(yè)spring課程Spring是一個(gè)非常活躍開(kāi)源框架它基于Core來(lái)構(gòu)架_第1頁(yè)
給java視頻-就業(yè)spring課程Spring是一個(gè)非?;钴S開(kāi)源框架它基于Core來(lái)構(gòu)架_第2頁(yè)
給java視頻-就業(yè)spring課程Spring是一個(gè)非?;钴S開(kāi)源框架它基于Core來(lái)構(gòu)架_第3頁(yè)
給java視頻-就業(yè)spring課程Spring是一個(gè)非?;钴S開(kāi)源框架它基于Core來(lái)構(gòu)架_第4頁(yè)
給java視頻-就業(yè)spring課程Spring是一個(gè)非?;钴S開(kāi)源框架它基于Core來(lái)構(gòu)架_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Spring是一個(gè)非?;钴S的開(kāi)源框架;它是一個(gè)基于Core來(lái)構(gòu)架多層JavaEE系統(tǒng)Spring以一種非侵入式的方式來(lái)管理你的代碼,Spring提倡”最少侵入”,這也就意味著你可以適當(dāng)?shù)臅r(shí)候安裝或卸載SpringSpringjar 在解 中找到下面jar文件,拷貝到類(lèi)路徑--spring的類(lèi)庫(kù)在spring文檔的dist--引入的第類(lèi)庫(kù)都spring文檔的lib 如果使用了切面編程(AOP),還需要下列jar文件lib/aspectj/aspectjweaver.jar和aspectjrt.jar如果使用了JSR-250中的注解,如@Resource/@PostConstruct/@PreDestroy,還需要下列jar文件注:JSR(Java規(guī)范請(qǐng)求)是指向JCP(JavaCommunityProcess)提出新增一個(gè)標(biāo)準(zhǔn)化技術(shù)規(guī)范的正式請(qǐng)求。任何人都可以提交JSR(Java規(guī)范請(qǐng)求),以向Java平臺(tái)增添新的API和服務(wù)。JSR已成為Java界的一個(gè)重要標(biāo)準(zhǔn)Spring默認(rèn)情況下是applicationContext.xml文件??梢越⒑芏鄕ml文件,工程中一般Spring的控制反轉(zhuǎn):把對(duì)象的創(chuàng)建、初始化、銷(xiāo)毀等工作交給spring容器來(lái)做。由spring容器控制對(duì)象的生命周期。 啟動(dòng)spring ApplicationContextctx=newString[]{"beans.xml"});可以在整個(gè)類(lèi)路徑中尋找xml文件*通過(guò)這種方式加載。需要將spring的配置文件放到當(dāng)前項(xiàng)目的classpath路徑下

*classpath路徑指的是當(dāng)前項(xiàng)目的 , 是 ApplicationContextctx=newString[]{“d:\\beans.xml“});Spring的配置文件可以指定多個(gè),可以通過(guò)String數(shù)組傳入。注:經(jīng)常用第法啟動(dòng)容 從spring<alias "<bean " Spring<bean Service" <beanid=" Service"class="com..factory. Service"/>public ServiceFactorypublicstatic Servicecreate returnnew }}對(duì)象的在每個(gè)SpringIoC容器中一個(gè)bean定義只有一個(gè)對(duì)象實(shí)例(共享)默認(rèn)情況下會(huì)在容器啟動(dòng)時(shí)初始化bean,但我們可以指定Bean節(jié)點(diǎn)的lazy-init=“true”來(lái)延遲初始化bean,這時(shí)候,只有第一次獲取bean會(huì)才初始化bean。<beanid="xxx" .OrderServiceBean"lazy-如果想對(duì)所有bean都應(yīng)用延遲初始化,可以在根節(jié)點(diǎn)beans設(shè)置default-<beansdefault-lazy-init="true“允許bean可以被多次實(shí)例化(使用一次就創(chuàng)建一個(gè)實(shí)例).Spring不能對(duì)一個(gè)prototypebean的整個(gè)生命周期負(fù)責(zé).這就意味著清楚prototype作用域的對(duì)象并釋放任何prototypebean所持有的昂貴資源都是客戶(hù)端的責(zé)任。Global初始化beanSpring默認(rèn)在啟動(dòng)時(shí)將所有singletonbean提前進(jìn)行實(shí)例化。提前實(shí)例化意味著作為初始化的一部分,ApplicationContext會(huì)自動(dòng)創(chuàng)建并配置所有的singletonbean.Lazy-init=”trueorLazy-init為false,spring容器將在啟動(dòng)的時(shí)候報(bào)錯(cuò)(比較好的式Lazy-init為true,springSpring初始化bean或銷(xiāo)毀bean時(shí),有時(shí)需要作一些處理工作,因此spring可以在創(chuàng)建和拆卸bean的時(shí)候調(diào)用bean的兩個(gè)生命周期方法。<beanid=“foo”init-destory-當(dāng)foo被載入到Spring容器中時(shí)調(diào)用init-method方法。當(dāng)foo從容器中刪除時(shí)調(diào)用destory-method(scope=singleton有效)使用xml<constructor-arg<value><constructor-arg<constructor-arg</constructor-<constructor-arg<value></constructor-setting使用xml簡(jiǎn)單Bean簡(jiǎn)單Bean包括兩種類(lèi)型:包裝類(lèi)型和<bean 基本類(lèi)型,string類(lèi)型<propertyname="age"<propertyname="name"value="其他<bean " "<bean <property " "listset裝配<property<entry<entrymap中的<entry>的數(shù)值和<list>以及<set>的一樣,可以使任何有效的屬性元素,需要注意的是key值必須是String的。<property<prop<prop

在配置文件中,引入context<beansxmlns="xmlns:xsi="beans-在配置文件中加入context:annotation-config注:@Resource注解在spring安裝 的lib\j2ee\common-這兩個(gè)注解的區(qū)別是:@Autowired默認(rèn)按類(lèi)型裝配,@Resource默認(rèn)按名稱(chēng)裝配,當(dāng)找不到與名稱(chēng)匹配的bean才會(huì)按類(lèi)型裝配。@Autowired注解是按類(lèi)型裝配依賴(lài)對(duì)象,默認(rèn)情況下它要求依賴(lài)對(duì)象必須存在,如果允許null值,可以設(shè)置它required屬性為false。 @Resource注解和@Autowired一樣,也可以標(biāo)注在字段或?qū)傩缘膕etter方法 名稱(chēng)可以通過(guò)@Resource的name屬性指定,如果沒(méi)有指定name當(dāng)注解標(biāo)注在字段上,即默認(rèn)取字段的名稱(chēng)作為bean當(dāng)注解標(biāo)注在屬性的setter方法上,即默認(rèn)取屬性名作為bean名稱(chēng)尋找依賴(lài)注意:如果沒(méi)有指定name屬性,并且按照默認(rèn)的名稱(chēng)找不到依賴(lài)對(duì)象時(shí),@Resource注解會(huì)回退到按類(lèi)型裝配。但一旦指定了name屬性,就只能按名指定Bean指定Bean前面的例子我們都是使用XML的bean定義來(lái)配置組件。在一個(gè)稍大的項(xiàng)目中,通常會(huì)有上百個(gè)組件,如果這些組件采用xml的bean定義來(lái)配置,顯然會(huì)增加配置文件的體積,查找及起來(lái)也不太方便。spring2.5為我們引入了組件自動(dòng)掃描機(jī)制,@Repository注解的類(lèi),并把這些類(lèi)納入進(jìn)spring容器中管理。它的作用和在xml文件中使用bean節(jié)點(diǎn)配置組件是一樣的。要使用自動(dòng)掃描機(jī)制,我們需要打開(kāi)以下配置1、引入context命名空間需要在xml<beansxmlns="xmlns:context=" 、在配置文件中添 scan 其中注1、在使用組件掃描元素時(shí),AutowiredAnnotationBeanPostProcessor和CommonAnnotationBeanPostProcessor會(huì)被自動(dòng)檢測(cè)并織入-所有這一切都不需要在XML中提供任何bean配置元數(shù)據(jù)。@Controller用于標(biāo)注控制層組件(如struts中的action)、@Repository用于標(biāo)注數(shù)據(jù)組件,即DAO組件。而@Component泛指組件,當(dāng)組件不好歸類(lèi)的時(shí)候,我們可以使用這個(gè)注解進(jìn)行spring圖中的配置文件中,parent為student在容器中繼承 IOCDI模式的英文叫做Proxy或Surrogate,中可譯為”“,所謂,就是一不想或者不能夠直接一個(gè)對(duì)象,而對(duì)象可以在客戶(hù)端和目標(biāo)對(duì)象之間起到中抽象角角色內(nèi)部含有對(duì)真實(shí)的,從而可以在任何時(shí)候題的,負(fù)責(zé)在需要的時(shí)候創(chuàng)建真實(shí)對(duì)象(和刪除真實(shí)主真實(shí)角JDK的動(dòng)態(tài)必須具備四個(gè)條件:總結(jié):1、因?yàn)槔肑DKProxy生成的類(lèi)實(shí)現(xiàn)了接口,所以目標(biāo)類(lèi)中所有的方法3、利用JDKProxy4、invoke方法中的三個(gè)參數(shù)可以目標(biāo)類(lèi)的被調(diào)用方法的API、被調(diào)用方 CGlib是一個(gè)強(qiáng)大的,高性能,高質(zhì)量的Code生成類(lèi)庫(kù)。它可以在運(yùn)行期擴(kuò)展Java類(lèi)與實(shí)現(xiàn)Java接口。 用CGlib生成類(lèi)是目標(biāo)類(lèi)的子類(lèi) 用CGlib生成類(lèi)不需要接 用CGLib生成的類(lèi)重寫(xiě)了父類(lèi)的各個(gè)方法 器中的intercept方法內(nèi)容正好就是類(lèi)中的方法若目標(biāo)對(duì)象實(shí)現(xiàn)了若干接口,spring使用JDK的java.lang.reflect.Proxy類(lèi)。若目標(biāo)對(duì)象沒(méi)有實(shí)現(xiàn)任何接口,spring使用CGLIB庫(kù)生成目標(biāo)對(duì)象的子類(lèi)。 器必須實(shí)現(xiàn)MethodInterceptor接 在spring中的配總結(jié):不管采用JDK動(dòng)態(tài)生成類(lèi)還是采用CGLIB生成動(dòng)態(tài)類(lèi)。目標(biāo)類(lèi)中 是這樣的),在器中的判碼書(shū)寫(xiě)會(huì)很。 AOP被納入springaop中的目標(biāo)類(lèi)的方法。所謂通知是指到j(luò)oinpoint之后所要做的事情就是通知.通知JDKProxy被到的目標(biāo)類(lèi)中方法的集類(lèi)AOPxml在spring配置文件中切在spring配置文件中目標(biāo)類(lèi)method=”checkSecurity”中的checkSecurity一樣。2、checkSecurity方法中通過(guò)JoinPoint參數(shù)可以獲得目標(biāo)類(lèi)的目標(biāo)方法名稱(chēng)、 在spring配置文件 在器中的方法要和checkSecurity方法一樣,有兩個(gè)參JoinPoint 這里的名字要和returning=”val”中保持一致,指的 在spring配置文件其中throwing 在異常通知中(器)中,必須是checkSecurity方法。 利用 在spring配置文件里 在spring文件 在環(huán)繞通知中,方法名稱(chēng)為checkSecurity。參數(shù)類(lèi)型ProceedingJoinPoint的proceed方法相當(dāng)于invoke方法,調(diào)用目標(biāo)類(lèi)的目標(biāo)方法。ProceedingJoinPoint繼承了JoinPoint類(lèi) Aop靜態(tài)代碼+動(dòng)態(tài)變量=jdbc編程。在spring中動(dòng)態(tài)變量可以用注入的形式給在spring中注入 簡(jiǎn)化為我們對(duì)JDBC的操 完成了對(duì)JDBC的流程的工作,包括SQL語(yǔ)句的創(chuàng)建和執(zhí) 僅需要傳遞DataSource就可以把它實(shí)例 Dao類(lèi)中,用JdbcTemplatespring對(duì)JdbcTemplate進(jìn)行注入。再對(duì)JdbcTemplate進(jìn)行DataSource注入。注:為什么只要對(duì)JdbcTemplate注入DataSource在Dao類(lèi)中,繼承JdbcDaoSupport。因?yàn)镴dbcDaoSupport已經(jīng)有了JdbcTemplate的,所以只要繼承JdbcDaoSupport就相當(dāng)于有了JdbcTemplate屬<property1、產(chǎn)生原因:在Jdbc的操作中,有很多情況下是要將ResultSet里的數(shù)據(jù)封裝到一個(gè)持久化Bean里,再把持久化Bean封裝到集合中。這樣會(huì)造成大量的代碼的重復(fù),不利于代碼重用。而RowMapper正好解決了這個(gè)問(wèn)題。2、使用: 寫(xiě)一個(gè)類(lèi)實(shí)現(xiàn)RowMapper接 SpringSpring事務(wù)的屬Spring事務(wù)的級(jí)XML 如果一個(gè)DAO類(lèi)繼承了HibernateDaoSupport,只需要在spring配置文件中注入SessionFactory就可以了。 如果一個(gè)DAO類(lèi)沒(méi)有繼承HibernateDaoSupport,需要有一個(gè)XML文件 在配置文件中spring的自動(dòng)掃描機(jī)制 在service層通過(guò)@Transaction進(jìn)行注jarSpringweb1、在web.xml

在web.xml中加載applicationContext.xml如果spring配置文件被命名為applicationContext.xml,并且放在WEB-INF param>,因?yàn)镃ontextLoaderListener默認(rèn)在WEB-INF下尋找名為applicationContext.xml<context- INF/classes/applicationContext.xml</param- </context-cl

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論