Spring-從入門到精通_第1頁
Spring-從入門到精通_第2頁
Spring-從入門到精通_第3頁
Spring-從入門到精通_第4頁
Spring-從入門到精通_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Spring輕量級容器框架Spring簡介Spring是一個控制反轉(zhuǎn)〔Ioc〕和面向切面編程〔AOP〕的輕量級的容器,為軟件開發(fā)提供全方位支持的應(yīng)用程序框架。控制反轉(zhuǎn)(InversionofControl,IoC)與依賴注入(DependencyInjection,DI)。由容器來管理對象之間的依賴關(guān)系〔而不是對象本身來管理〕,就叫“控制反轉(zhuǎn)”或“依賴注入”.控制反轉(zhuǎn)應(yīng)用本身不負責(zé)依賴對象的創(chuàng)立和維護,而是由外部容器來負責(zé)。這樣控制權(quán)就由應(yīng)用轉(zhuǎn)移到外部容器,控制權(quán)的轉(zhuǎn)移就是所謂的反轉(zhuǎn)。容器是符合某種標準能夠提供一系列效勞的管理器,開發(fā)人員可以利用容器所提供的效勞來方便地實現(xiàn)某些特殊的功能。所謂的“重量級”容器是指那些完全遵守J2EE的標準,提供標準中所有的效勞。EJB就是典型的例子?!拜p量級”容器的也是遵守J2EE的標準,但其中的效勞可以自由配置。Spring最常用的特性利用Spring來創(chuàng)立對象〔JavaBean工廠〕利用Spring構(gòu)建業(yè)務(wù)邏輯層管理依賴關(guān)系適應(yīng)需求變更利用Spring創(chuàng)立數(shù)據(jù)訪問對象〔DAO〕利用Spring進行事務(wù)處理Spring的安裝下載并解壓將相應(yīng)的jar包參加類路徑spring.jar配置SpringApplicationContext.xmlIoC/DI控制反轉(zhuǎn)(InversionofControl,IoC)與依賴注入(DependencyInjection,DI)。由容器來管理對象之間的依賴關(guān)系〔而不是對象本身來管理〕,就叫“控制反轉(zhuǎn)”或“依賴注入”前面的例子,已清楚闡述IoC/DI出現(xiàn)的原因,以及IoC的根本原理:抽象不依賴于現(xiàn)實,而是現(xiàn)實依賴于抽象。Spring框架的根本思想就是IoC/DI,Spring就是一個IoC容器IoC與DI,說的是一回事,但DI這個名詞更能表達這種設(shè)計模式的思想Spring架構(gòu)依賴注入的類型構(gòu)造器注入通過類的構(gòu)造方法注入依賴關(guān)系使用<constructor-arg>

元素設(shè)值方法注入通過類的setter方法注入依賴關(guān)系使用<property>元素依賴注入的配置注入根本數(shù)據(jù)類型,字符串等。在<property>或<constructor-arg>元素中使用<value>在<property>或<constructor-arg>元素中加上value屬性注入依賴對象在<property>或<constructor-arg>元素中使用<ref>在<property>或<constructor-arg>元素中加上ref屬性注入null值如果使用<value></value>這種形式,Spring是作為空字符串來對待的。可以使用<null>表示null值內(nèi)部Bean,在<property>或<constructor-arg>元素中使用<bean>元素再定義一個Bean內(nèi)部Bean的scope、id、name屬性會被忽略內(nèi)部Bean總是prototype(原型)模式內(nèi)部Bean不能在包含該內(nèi)部Bean的Bean之外依賴注入的配置注入集合通過<list>、<set>、<map>、<props>配置與JavaCollection類型對應(yīng)List、Set、Map、Properties<propertyname=“l(fā)ists”>

<list><value></value><ref/></list></property><propertyname=“maps”>

<map><entry><key> <value></value> </key><value></value></entry></map></property><propertyname=“sets”>

<set><value></value><ref/></set></property><propertyname=“emails”>

<props><propkey=“support”></prop></props></property>Bean的依賴模式1用ref屬性指定依賴。local模式

Bean與被參考引用的Bean在同一個XML文件中,而且被參考 應(yīng)用的Bean是指定id屬性。

Spring的XML解析器會在解析時匹配,如果沒有匹配的元 素,XML解析器會產(chǎn)生一個錯誤。<propertyname="book"><reflocal="book1"/></property>

Bean的依賴模式2bean模式〔可找id,也可找name命名的別名〕<beanid="book1"name="book2"class="com.Book">Bean與被參考引用的Bean可以在不同的XML文件中。ApplicationContextcontext=newClassPathXmlApplicationContext(newString[]{"beans1.xml","beans2.xml"});bean-dao.xmlbean-po.xmlbean-service.xmlbean-….xmlBean的依賴模式3parent模式,表示被參考引用的Bean可以是當(dāng)前

BeanFactory或ApplicationContext的父BeanFactory或ApplicationContext中的Bean。表示繼承的父類

如果有很多繼承同一個父類的BEAN

那么在配置文件中實例那些BEAN時候可以省略掉父類已經(jīng)注入的屬性

bean定義繼承父bean定義,它可以覆蓋父bean的一些值,或者它需要的值。

三種實例化Bean的方式使用類構(gòu)造器實例化,也就是沒有參數(shù)的構(gòu)造函數(shù)來建立Bean的實例

<beanid="sample"class="com.fendou.service.impl.SampleImpl"/>使用靜態(tài)工廠方法實例化publicPersonFactory{publicstaticPersongetPerson(){returnnewPerson(); }}<beanid="person2"class="com.spring.bean.PersonFactory"factory-method="getPerson"></bean>使用實例工廠方法實例化<beanid=“sampleFactory"class="com.fendou.service.impl.SampleFactory“><beanid="sample3"factory-bean=“sampleFactory”factory-method=“createSample”/>Bean的作用域Singleton。在Spring中取得的實例被默認為Singleton(單例)<beanid=“sample”class=“com.fendou.service.impl.SampleImpl“scope=“singleton”/><beanid=“sample”class=“com.fendou.service.impl.SampleImpl“singleton=“true”/>Prototype。在每次對該bean請求時創(chuàng)立出一個新的bean對象(原型)<beanid=“sample”class=“com.fendou.service.impl.SampleImpl“scope=“prototype”/>其他作用域:request、session、globalsession延遲初始化Bean默認的情況下在容器啟動時會初始化Bean。但可以通過指定<bean>元素中的lazy-init屬性來延遲初始化Bean,這樣將會在第一次獲取Bean的時候初始化Bean

<beanid="sample"class="com.fendou.service.impl.SampleImpl“l(fā)azy-init=“true”/>如果想對所有的Bean都延遲初始化,可以修改<beans>元素

<beansdefault-lazy-init=“true”>Bean的生命周期Bean的生命周期包括:Bean的定義、Bean的初始化、Bean的使用、Bean的銷毀。Bean的初始化可以通過指定init-method屬性來完成

<beanid="sample"class="com.fendou.service.impl.SampleImpl“ init-method=“init”/>

或者通過實現(xiàn)接口,實現(xiàn)afterPropertiesSet()方法來完成Bean的銷毀可以通過指定destory-method屬性來完成

<beanid="sample"class="com.fendou.service.impl.SampleImpl“destory-method=“clearup”/>

或者通過實現(xiàn)接口,實現(xiàn)destory()方法來完成Bean的自動裝配模式Spring提供了5種自動裝配的模式,從而減少一些屬性的設(shè)置。在<bean>元素中設(shè)置autowire屬性byName模式,通過Bean的屬性名字進行自動裝配byType模式,通過在配置文件查找一個屬性類型一樣的Bean來進行自動裝配constructor模式,是指根據(jù)構(gòu)造函數(shù)的參數(shù)盡心自動裝配autodetect模式,通過對Bean檢查類的內(nèi)部來選擇是constructor還是byType模式no模式,不使用自動裝配在企業(yè)應(yīng)用開發(fā)過程中,是不主張使用自動裝配模式的Bean的依賴檢查Spring允許Bean在初始化之前強制執(zhí)行其他Bean的初始化。通過的<bean>元素中指定depends-on屬性設(shè)置通過在<bean>元素中指定dependency-check屬性來檢查Bean的每個屬性是否設(shè)定完成。simple模式,對根本類型、字符串、集合進行依賴檢查object模式,對依賴的對象進行依賴檢查all模式,對全部屬性進行依賴檢查none模式,不進行依賴檢查基于注解的依賴注入基于注解〔Annotation〕的配置有越來越流行的趨勢,Spring2.5順應(yīng)這種趨勢,提供了完全基于注釋配置Bean、裝配Bean的功能,學(xué)員可以使用基于注解的SpringIoC替換原來基于XML的配置。注解配置相對于XML配置具有很多的優(yōu)勢:它可以充分利用Java的反射機制獲取類結(jié)構(gòu)信息,這些信息可以有效減少配置的工作。注釋和Java代碼位于一個文件中,而XML配置采用獨立的配置文件,大多數(shù)配置信息在程序開發(fā)完成后都不會調(diào)整,如果配置信息和Java代碼放在一起,有助于增強程序的內(nèi)聚性。而采用獨立的XML配置文件,程序員在編寫一個功能時,往往需要在程序文件和配置文件中不停切換,這種思維上的不連貫會降低開發(fā)效率。因此在很多情況下,注解配置比XML配置更受歡送,注解配置有進一步流行的趨勢。Spring2.5的一大增強就是引入了很多注釋類,現(xiàn)在我們已經(jīng)可以使用注解配置完成大局部XML配置的功能。基于注解的依賴注入spring注解的使用1、要使用注解來代替xml的配置,要引入如下jar包:%spring_home%\lib\j2ee\common-annotations.jar。而且在applicationContext.xml中要參加<context:annotation-config/>的命名空間。2、引入spring頭文件3、寫@開頭注解@Resource注入接口配置文件修改<beansxmlns=":///schema/beans"xmlns:xsi=":///2001/XMLSchema-instance"xmlns:context=":///schema/context"xsi:schemaLocation=

:///schema/context/spring-context-2.5.xsd"><context:annotation-config/></beans>基于注解的依賴注入@Resource注解以前我們使通過配置xml文件方式來表示Bean之間的依賴關(guān)系,而現(xiàn)在我們可以通過@Resource方式來表示Bean之間的依賴關(guān)系packagecom.fendou;importjavax.annotation.Resource;publicclassUser{//通過@Resource注解把配置文件中id為user1的bean注入給屬性user1

@Resource(name="user1")privateUser1user1;@Resource(name="user2")privateUser2user;//省略了getter和setter方法}基于注解的依賴注入@PostConstruct和@PreDestroy注解Spring容器中的Bean是有生命周期的,Spring允許在Bean在初始化完成后以及Bean銷毀前執(zhí)行特定的操作,您既可以通過實現(xiàn)InitializingBean/DisposableBean接口來定制初始化之后/銷毀之前的操作方法,也可以通過<bean>元素的init-method/destroy-method屬性指定初始化之后/銷毀之前調(diào)用的操作方法。關(guān)于Spring的生命周期已經(jīng)在前面的章節(jié)詳細講解過了,現(xiàn)在我們用@PostConstruct和@PreDestroy這兩個注釋從新測試spring的生命周期。標注了@PostConstruct的方法將在類實例化后調(diào)用,而標注了@PreDestroy的方法將在類銷毀之前調(diào)用。請看User.java類packagecom.fendou;importjavax.annotation.PostConstruct;importjavax.annotation.PreDestroy;publicclassUser{@PostConstructpublicvoidinit(){System.out.println("init");}@PreDestroypublicvoiddestory(){System.out.println("destory");}}下面是spring的配置<context:annotation-config/><beanid="user"class="com.fendou.User"></bean>基于注解的依賴注入@Component注解雖然我們可以通過@Resource在Bean類中使用自動注入功能,但是Bean還是在XML文件中通過<bean>進行定義,也就是說,在XML配置文件中定義Bean,通過@Resource為Bean的成員變量、方法入?yún)⒒驑?gòu)造函數(shù)入?yún)⑻峁┳詣幼⑷氲墓δ?。能否也通過注解定義Bean,從XML配置文件中完全移除Bean定義的配置呢?答案是肯定的,我們通過Spring2.5提供的@Component注釋就可以到達這個目標了。下面,我們完全使用注釋定義Bean并完成Bean之間裝配:使用@Component注解的User1,僅需要在類定義處,使用@Component注解就可以將一個類定義了Spring容器中的Bean。方法:1、參加spring配置文件中參加

<context:component-scanbase-package="com.spring.bean"></context:component-scan><beansxmlns=":///schema/beans"xmlns:xsi=":///2001/XMLSchema-instance"xmlns:context=":///schema/context"xsi:schemaLocation="><context:component-scanbase-package="com.spring.bean"></context:component-scan>

用@Component方法注入到spring中.@ComponentpublicclassUser1{ publicvoidprint(){System.out.println("我是User1");}}基于注解的依賴注入使用@Component注解的User2@ComponentpublicclassUser2{publicvoidprint(){System.out.println("我是User2");}}使用@Component注解的Userpackagecom.fendou;importjavax.annotation.Resource;importorg.springframework.stereotype.Component;@Component("user")publicclassUser{@Resource(name="user1")privateUser1user1;@Resource(name="user2")privateUser2user2;//省略了getter和setter方法 }基于注解的依賴注入@Scope注解默認情況下通過@Component定義的Bean都是singleton的,如果需要使用其它作用范圍的Bean,可以通過@Scope注釋來到達目標,如以下代碼所示:packagecom.fendou;importorg.springframework.context.annotation.Scope;importorg.springframework.stereotype.Component;@Component@Scope("prototype")publicclassUser1{publicvoidprint(){ System.out.println("我是User1");}}其他注解@Repository 持久層@Service 業(yè)務(wù)層@Controller 控制層〔Web層〕@Component對那些比較中立的類進行注解。

這3個注解和@Component是等效的和@Component相比沒有什么新意,但Spring將在以后的版本中為它們添加特殊的功能AOP面向切面(方面)編程〔AspectOrientedProgramming,AOP)在實際應(yīng)用中,常常會寫一些與具體業(yè)務(wù)無關(guān)的代碼,例如日志、權(quán)限、異常處理、事務(wù)處理等。在編寫的過程中,將這樣的代碼編寫到一起,所以處處都有重復(fù)的代碼。使用AOP,就是將這種和業(yè)務(wù)邏輯關(guān)系不大的代碼別離出來,到達重用的目的。AOP是一種思想,和具體的實現(xiàn)技術(shù)無關(guān)。任何一種符合AOP思想的技術(shù)實現(xiàn),都可以看作AOP的實現(xiàn)。Spring的AOP是建立在Java的動態(tài)代理機制之上的。Java的反射機制什么是動態(tài)語言?根本的定義是程序運行時,允許改變程序結(jié)構(gòu)或變量類型,這種語言稱為動態(tài)語言。在這樣的定義與分類下Java不是動態(tài)語言,它卻有著一個非常突出的動態(tài)相關(guān)機制:Reflection〔反射〕Java的反射機制:Java程序可以加載一個運行時才得知名稱的class,得悉其完整構(gòu)造,并生成其對象實體、或?qū)ζ鋐ields設(shè)值、或調(diào)用其methods。這種機制也可以稱為introspection〔內(nèi)省〕通過和包中的Method、Field、Constructor等實現(xiàn)。Java的動態(tài)代理普通代理模式:生成一個和類相同接口的代理類,用戶通過使用代理類來封裝某個實現(xiàn)類。

Java的動態(tài)代理:動態(tài)代理中的代理類是由java.lang.reflect.Proxy類在運行期時根據(jù)接口定義,采用Java反射機制動態(tài)生成的。結(jié)合接口,加強現(xiàn)有類的方法實現(xiàn)。使用CGLIB代理AOP的概念連接點(JoinPoint),指程序運行中的某個階段點,如某個方法的調(diào)用,異常的拋出等。切入點(Pointcut)是連接點的集合,它是程序中需要注入Advice的位置的集合,指明Advice要在什么樣的條件下才能觸發(fā)。通知(Advice),指某個連接點所采用的處理邏輯,前例中輸出日志的代碼就是一個通知。Advisor,是切入點和通知之間的配置器。SpringAOP首先我們要參加如下jar文件%spring_home%\lib\aspectj\aspectjrt.jar%spring_home%\lib\aspectj\aspectjweaver.jarSpring配置文件的頭要有如下內(nèi)容xmlns:aop=":///schema/aop"一個例子:我們用spring實現(xiàn)事務(wù),事務(wù)不是硬編碼,而是 通過springaop完成SpringAOPBookFacade.java代碼如下:packagecom.fendou;publicclassBookFacadeImplimplementsBookFacade{ publicvoidaddBook(){ System.out.println("增加圖書實際的方法"); }}BookFacadeImpl.java代碼如下:packagecom.fendou;publicinterfaceBookFacade{ publicvoidaddBook();}SpringAOP現(xiàn)在我們定義一個普通的類,里面有個方法用來開啟事務(wù),代碼如下:packagecom.fendou;publicclassTransaction{publicvoidbeginTransaction(){ System.out.println("開啟事務(wù)");}}Spring配置文件如下<beanid="bookFacade"class="com.fendou.BookFacadeImpl"></bean><beanid="transaction"class="com.fendou.Transaction"></bean>

<aop:config> <!--切入點--> <aop:pointcutid="trans" <!--切入點表達式--> expression="execution(*com.fendou.BookFacade.*(..))"/> <!--切面--> <aop:aspectid="myAspect"ref="transaction"> <!--通知--> <aop:beforepointcut-ref="trans"method="beginTransaction"/> </aop:aspect></aop:config>SpringAOP<beanid="bookFacade"class="com.fendou.BookFacadeImpl"></bean><beanid="transaction"class="com.fendou.Transaction"></bean>

<aop:config> <!--切入點--> <aop:pointcutid="trans" <!--切入點表達式--> expression="execution(*com.fendou.BookFacade.*(..))"/> <!--切面--> <aop:aspectid="myAspect"ref="transaction"> <!--通知--> <aop:beforepointcut-ref="trans"method="beginTransaction"/> </aop:aspect></aop:config>Spring配置文件如下SpringAOP對一些切入點的說明任意公共方法:execution(public**(..))任意一個名字以set開始的方法:execution(*set*(..))AccountService接口定義的任意方法:execution(*com.xyz.service.AccountService.*(..))在service包中定義的任意方法:execution(*com.xyz.service.*.*(..))在service包或其子包中定義的任意方法:execution(*com.xyz.service..*.*(..))

SpringAOP對于通知的一些說明@Before前置通知@AfterReturning后置通知@AfterThrowing異常通知:在方法拋出異常后執(zhí)行@After最終通知:不管一個方法是如何結(jié)束的,最終通知都運行@Around環(huán)繞通知(做權(quán)限使用)通知的第一個參數(shù)必須是ProceedingJoinPoint類型。在通知體內(nèi)調(diào)用它的proceed()方法會導(dǎo)致后臺連接點方法的執(zhí)行

基于@AspectJ的AOPAspectJ是AOP的一種實現(xiàn),spring集成了它還是剛剛的例子BookFacade.java和BookFacadeImpl .java的代碼不變Transaction.java代碼有改動如下:

//通過注解定義切面@AspectpublicclassTransaction{//定義切入點及其表達式@Pointcut("execution(*com.fendou.BookFacade.*(..))")

publicvoidpointCutXxx(){};

//定義通知類型@Before("pointCutXxx()")publicvoidbeginTransaction(){ System.out.println("開啟事務(wù)");}}Spring與Hibernate的集成參加hibernate相關(guān)內(nèi)容Hibernate的包實體類與*.hbm.xml文件的建立參加spring相關(guān)內(nèi)容引入spring的包引入spring的配置文件application.xmlSpring與Hibernate的集成讓spring管理hibernate的sessionFactory<!–注入sessionFactory--><beanid="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><propertyname="configLocation"><value>classpath:hibernate.cfg.xml</value></property></bean>配置事務(wù)管理大多數(shù)的應(yīng)用程序,事務(wù)管理被分配到業(yè)務(wù)邏輯方法上,即每個業(yè)務(wù)邏輯方法是一個事務(wù)在Spring中,所有的業(yè)務(wù)邏輯對象,均是普通的POJOSpring最強大的功能在于,它可以在普通的POJO上面實現(xiàn)聲明式的事務(wù)管理〔它使用AOP來完成這樣的任務(wù)〕步驟如下:定義一個事務(wù)管理器配置事務(wù)的傳播特性

Spring與Hibernate的集成定義一個事務(wù)管理器Spring與Hibernate的集成<!--配置事務(wù)管理器--><beanid="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><propertyname="sessionFactory"><reflocal="sessionFactory"/></property></bean>配置事務(wù)的傳播特性Spring與Hibernate的集成<!--配置事務(wù)特性-->

<tx:adviceid="txAdvice"transaction-manager="transactionManager"><tx:attributes> <!--對get/find/search開頭的方法要求只讀事務(wù)--> <tx:methodname="get*"propagation="SUPPORTS"read-only="true"/> <tx:methodname="find*"propagation="SUPPORTS"read-only="true"/> <tx:methodname="search*"propagation="SUPPORTS"read-only="true"/> <!--對其它方法要求事務(wù)--> <tx:methodname="*"propagation="REQUIRED"/></tx:attributes></tx:advice><!--配置那些類的方法進行事務(wù)管理--><aop:config>

<aop:pointcutid="allManagerMethod"expression="execution(*com.fendou.manager.*.*(..))"/>

<aop:advisoradvice-ref="txAdvice"pointcut-ref="allManagerMethod"/></aop:config>Spring的事務(wù)級別Spring提供7種事務(wù)級別REQUIRED,如果當(dāng)前沒有事務(wù),就新建一個事務(wù),如果已經(jīng)存在一個事務(wù)中,參加到這個事務(wù)中。這是最常見的選擇。SUPPORTS,支持當(dāng)前事務(wù),如果當(dāng)前沒有事務(wù),就以非事務(wù)方式執(zhí)行。MANDATORY,使用當(dāng)前的事務(wù),如果當(dāng)前沒有事務(wù),就拋出異常。REQUIRES_NEW,新建事務(wù),如果當(dāng)前存在事務(wù),把當(dāng)前事務(wù)掛起。NOT_SUPPORTED,以非事務(wù)方式執(zhí)行操作,如果當(dāng)前存在事務(wù),就把當(dāng)前事務(wù)掛起。PROPAGATION_NEVER,以非事務(wù)方式執(zhí)行,如果當(dāng)前存在事務(wù),那么拋出異常。PROPAGATION_NESTED,如果當(dāng)前存在事務(wù),那么在嵌套事務(wù)內(nèi)執(zhí)行。如果當(dāng)前沒有事務(wù),那么執(zhí)行與PROPAGATION_REQUIRED類似的操作。創(chuàng)立可以支持Hibernate的DAO對象HibernateDaoSupport這是Spring提供的集成Hibernate的基類,所有用Hibernate實現(xiàn)的DAO,均需要繼承它從這個類中,可以獲取Hibernate的各種核心接口,如Session、SessionFactory等這個類的兩個重要方法getSession()和getSessionFactory()HibernateTemplateHibernateTemplate是Spring封裝的Hibernate操作接口,類似于Session接口可以調(diào)用HibernateDaoSupport提供的getHibernateTemplate()方法獲取HibernateTemplate對象Template模式:在父類定義一個操作中算法的骨架或操作順序,而將一些步驟的具體實現(xiàn)延遲到子類中。DAO的配置Dao的配置例如必須注入sessionFactory或dataSource的定義<beanid=“staffDao”class=“com.fendou.staff.dao.StaffDaoImpl"><propertyname="sessionFactory"><refbean=“sessionFactory”/></property></bean><beanid=“staffDaoJDBC”class=“com.fendou.staff.dao.StaffDaoJDBCImpl"><propertyname=“dataSource"><refbean=“dataSource”/></property></bean>配置ServiceService配置例如<beanid=“staffHelper”class=“com.fendou.staff.service.StaffHelperImpl"><propertyname=“staffDao”ref=“staffDao”/><propertyname=“staffDaoJDBC”ref=“staffDaoJDBC”/></bean>Spring與struts的集成參加struts相關(guān)內(nèi)容struts的包struts-config.xml參加spring相關(guān)內(nèi)容引入spring的包引入spring的配置文件application.xmlSpring與struts的集成讓系統(tǒng)啟動的時候加載ApplicationContext.xml(在web.xml中增加如下內(nèi)容)<context-param><param-name>contextConfigLocation</param-name><param-value> /WEB-INF/classes/applicationContext-*.xml, classpath*:applicationContext-*.xml</param-value></context-param>

<listener><listener-class></listener-cla

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論