




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Spring總結主要內容l Spring框架的概述l Spring的快速入門l Spring 工廠接口l 在MyEclipse 配置Spring的xml文件提示l IoC容器裝配Bean(xml配置方式)l Ioc容器裝配Bean(注解方式)l 在web項目中集成Springl Spring 整合 junit4 測試 1.1 Spring框架學習路線:Spring的IocSpring的AOP , AspectJSpring的事務管理 , 三大框架的整合.1.2 Spring框架的概述:1.2.1 什么是Spring:Spring是分層的JavaSE/EE full-stack(一站式) 輕量級
2、開源框架* 分層:* SUN提供的EE的三層結構:web層、業務層、數據訪問層(持久層,集成層)* Struts2是web層基于MVC設計模式框架.* Hibernate是持久的一個ORM的框架.* 一站式:* Spring框架有對三層的每層解決方案:* web層:Spring MVC.* 持久層:JDBC Template * 業務層:Spring的Bean管理.1.2.2 Spring的核心:IOC:(Inverse of Control 反轉控制)* 控制反轉:將對象的創建權,交由Spring完成.AOP:Aspect Oriented Programming 是 面向對象的功能延伸.不
3、是替換面向對象,是用來解決OO中一些問題.IOC:控制反轉.1.2.3 Spring的版本:Spring3.x和Spring4.x Spring4需要整合hibernate EJB:企業級JavaBeanEJB:SUN公司提出EE解決方案.2002 : Expert One-to-One J2EE Design and Development 2004 : Expert One-to-One J2EE Development without EJB (EE開發真正需要使用的內容.)1.2.5 Spring優點:方便解耦,簡化開發* Spring就是一個大工廠,可以將所有對象創建和
4、依賴關系維護,交給Spring管理AOP編程的支持* Spring提供面向切面編程,可以方便的實現對程序進行權限攔截、運行監控等功能聲明式事務的支持* 只需要通過配置就可以完成對事務的管理,而無需手動編程方便程序的測試* Spring對Junit4支持,可以通過注解方便的測試Spring程序方便集成各種優秀框架* Spring不排斥各種優秀的開源框架,其內部提供了對各種優秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持降低JavaEE API的使用難度* Spring 對JavaEE開發中非常難用的一些API(JDBC、JavaMail、遠程調用等),都
5、提供了封裝,使這些API應用難度大大降低1.3 Spring的入門的程序:1.3.1 下載Spring的開發包:spring-framework-3.2.0.RELEASE-dist.zip-Spring開發包* docs:spring框架api和規范* libs:spring開發的jar包* schema:XML的約束文檔.spring-framework-3.0.2.RELEASE-dependencies.zip-Spring開發中的依賴包1.3.2 創建web工程引入相應jar包:spring-beans-3.2.0.RELEASE.jarspring-context-3.2.0.RE
6、LEASE.jarspring-core-3.2.0.RELEASE.jarspring-expression-3.2.0.RELEASE.jar開發的日志記錄的包:mons.logging-1.1.1.jar- 用于整合其他的日志的包(類似Hibernate中slf4j).apache.log4j-1.2.15.jar1.3.3 創建Spring的配置文件:在src下創建一個applicationContext.xml引入XML的約束:* 找到xsd-config.html.引入beans約束:<beans xmlns="http:/w
7、/schema/beans" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/schema/beans /schema/beans/spring-beans.xsd">1.3.4 在配置中配置類:<bean id="userService" class=&q
8、uot;cn.itcast.spring3.demo1.HelloServiceImpl"></bean>1.3.5 創建測試類:Test/ Spring開發public void demo2() / 創建一個工廠類.ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");HelloService helloService = (HelloService) applicationContext.getB
9、ean("userService");helloService.sayHello();1.3.6 IOC和DI(*)區別?IOC:控制反轉:將對象的創建權,由Spring管理.DI:依賴注入:在Spring創建對象的過程中,把對象依賴的屬性注入到類中.* 面向對象中對象之間的關系;* 依賴:public class Aprivate B b;* 繼承:is a* 聚合:* 聚集:* 組合:1.3.7 Spring框架加載配置文件:ApplicationContext 應用上下文,加載Spring 框架配置文件加載classpath: new ClassPathXmlAppl
10、icationContext("applicationContext.xml");:加載classpath下面配置文件.加載磁盤路徑: new FileSystemXmlApplicationContext("applicationContext.xml");:加載磁盤下配置文件.1.3.8 BeanFactory與ApplicationContext區別?ApplicationContext類繼承了BeanFactory.BeanFactory在使用到這個類的時候,getBean()方法的時候才會加載這個類.ApplicationContext類加載配
11、置文件的時候,創建所有的類.ApplicationContext對BeanFactory提供了擴展:* 國際化處理* 事件傳遞* Bean自動裝配* 各種不同應用層的Context實現* 早期開發使用BeanFactory.1.3.9 MyEclipse配置XML提示:Window->xml catalog->add 找到schema的位置 ,將復制的路徑 copy指定位置,選擇schema location.1.4 IOC裝配Bean:1.4.1 Spring框架Bean實例化的方式:提供了三種方式實例化Bean.* 構造方法實例化:(默認無參數)* 靜態工廠實例化:* 實例工廠
12、實例化:無參數構造方法的實例化:<!- 默認情況下使用的就是無參數的構造方法. -><bean id="bean1" class="cn.itcast.spring3.demo2.Bean1"></bean>靜態工廠實例化:<!- 第二種使用靜態工廠實例化 -><bean id="bean2" class="cn.itcast.spring3.demo2.Bean2Factory" factory-method="getBean2">&
13、lt;/bean>實例工廠實例化:<!- 第三種使用實例工廠實例化 -><bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3"></bean><bean id="bean3Factory" class="cn.itcast.spring3.demo2.Bean3Factory"/>1.4.2 Bean的其他配置:id和name的區別:id遵守XML約束的id
14、的約束.id約束保證這個屬性的值是唯一的,而且必須以字母開始,可以使用字母、數字、連字符、下劃線、句話、冒號name沒有這些要求* 如果bean標簽上沒有配置id,那么name可以作為id.* 開發中Spring和Struts1整合的時候, /login.<bean name=”/login” class=”>現在的開發中都使用id屬性即可.類的作用范圍:scope屬性 :* singleton:單例的.(默認的值.)* prototype:多例的.* request:web開發中.創建了一個對象,將這個對象存入request范圍,request.setAttribute();*
15、session:web開發中.創建了一個對象,將這個對象存入session范圍,session.setAttribute();* globalSession:一般用于Porlet應用環境.指的是分布式開發.不是porlet環境,globalSession等同于session;實際開發中主要使用singleton,prototypeBean的生命周期:配置Bean的初始化和銷毀的方法:配置初始化和銷毀的方法:* init-method=”setup”* destroy-method=”teardown”執行銷毀的時候,必須手動關閉工廠,而且只對scope=”singleton”有效.Bean的生
16、命周期的11個步驟:1.instantiate bean對象實例化2.populate properties 封裝屬性3.如果Bean實現BeanNameAware 執行 setBeanName4.如果Bean實現BeanFactoryAware 或者 ApplicationContextAware 設置工廠 setBeanFactory 或者上下文對象 setApplicationContext5.如果存在類實現 BeanPostProcessor(后處理Bean) ,執行postProcessBeforeInitialization6.如果Bean實現InitializingBean 執行
17、 afterPropertiesSet 7.調用<bean init-method="init"> 指定初始化方法 init8.如果存在類實現 BeanPostProcessor(處理Bean) ,執行postProcessAfterInitialization9.執行業務處理10.如果Bean實現 DisposableBean 執行 destroy11.調用<bean destroy-method="customerDestroy"> 指定銷毀方法 customerDestroy在CustomerService類的add方法之前
18、進行權限校驗?1.4.3 Bean中屬性注入:Spring支持構造方法注入和setter方法注入:構造器注入:<bean id="car" class="cn.itcast.spring3.demo5.Car"><!- <constructor-arg name="name" value="寶馬"/><constructor-arg name="price" value="1000000"/> -><constructor
19、-arg index="0" type="java.lang.String" value="奔馳"/><constructor-arg index="1" type="java.lang.Double" value="2000000"/></bean>setter方法注入:<bean id="car2" class="cn.itcast.spring3.demo5.Car2"><!- &l
20、t;property>標簽中name就是屬性名稱,value是普通屬性的值,ref:引用其他的對象 -><property name="name" value="保時捷"/><property name="price" value="5000000"/></bean>setter方法注入對象屬性:<property name="car2" ref="car2"/>名稱空間p:注入屬性:Spring2.5版本引入了名稱
21、空間p.p:<屬性名>="xxx" 引入常量值p:<屬性名>-ref="xxx" 引用其它Bean對象引入名稱空間:<beans xmlns="/schema/beans" xmlns:p="/schema/p" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocatio
22、n="/schema/beans /schema/beans/spring-beans.xsd"><bean id="car2" class="cn.itcast.spring3.demo5.Car2" p:name="寶馬" p:price="400000"/><bean id="person" class="cn.itcas
23、t.spring3.demo5.Person" p:name="童童" p:car2-ref="car2"/>SpEL:屬性的注入:Spring3.0提供注入屬性方式:語法:#表達式<bean id="" value="#表達式"><bean id="car2" class="cn.itcast.spring3.demo5.Car2"><property name="name" value="#
24、9;大眾'"></property><property name="price" value="#'120000'"></property></bean><bean id="person" class="cn.itcast.spring3.demo5.Person"><!-<property name="name" value="#personI"/
25、>-><property name="name" value="#personInfo.showName()"/><property name="car2" value="#car2"/></bean><bean id="personInfo" class="cn.itcast.spring3.demo5.PersonInfo"><property name="name" value=&qu
26、ot;張三"/></bean>1.4.4 集合屬性的注入:<bean id="collectionBean" class="cn.itcast.spring3.demo6.CollectionBean"><!- 注入List集合 -><property name="list"><list><value>童童</value><value>小鳳</value></list></property>
27、;<!- 注入set集合 -><property name="set"><set><value>杜宏</value><value>如花</value></set></property><!- 注入map集合 -><property name="map"><map><entry key="剛剛" value="111"/><entry key="嬌
28、嬌" value="333"/></map></property><property name="properties"><props><prop key="username">root</prop><prop key="password">123</prop></props></property></bean>1.4.5 加載配置文件:一種寫法:Application
29、Context applicationContext = new ClassPathXmlApplicationContext("bean1.xml",”bean2.xml”);二種方法:<import resource="applicationContext2.xml"/>1.5 IOC裝配Bean(注解方式)1.5.1 Spring的注解裝配BeanSpring2.5 引入使用注解去定義BeanComponent 描述Spring框架中Bean Spring的框架中提供了與Component注解等效的三個注解:Repository 用于對
30、DAO實現類進行標注Service 用于對Service實現類進行標注Controller 用于對Controller實現類進行標注* 三個注解為了后續版本進行增強的.1.5.2 Bean的屬性注入:普通屬性;Value(value="itcast")private String info;對象屬性:Autowired:自動裝配默認使用類型注入.Autowired Qualifier("userDao")- 按名稱進行注入.Autowired Qualifier("userDao")private UserDao userDao;等價
31、于Resource(name="userDao")private UserDao userDao;1.5.3 Bean其他的屬性的配置:配置Bean初始化方法和銷毀方法:* init-method 和 destroy-method.PostConstruct 初始化PreDestroy 銷毀配置Bean的作用范圍:Scope1.5.4 Spring3.0提供使用Java類定義Bean信息的方法Configurationpublic class BeanConfig Bean(name="car")public Car showCar()Car car =
32、 new Car();car.setName("長安");car.setPrice(40000d);return car;Bean(name="product")public Product initProduct()Product product = new Product();product.setName("空調");product.setPrice(3000d);return product;1.5.5 實際開發中使用XML還是注解?XML:* bean管理注解;* 注入屬性的時候比較方便.兩種方式結合;一般使用XML注冊Be
33、an,使用注解進行屬性的注入.<context:annotation-config/>sAutowiredQualifier("orderDao")private OrderDao orderDao;1.6 Spring整合web開發:正常整合Servlet和Spring沒有問題的但是每次執行Servlet的時候加載Spring配置,加載Spring環境.* 解決辦法:在Servlet的init方法中加載Spring配置文件?* 當前這個Servlet可以使用,但是其他的Servlet的用不了了!* 將加載的信息內容放到ServletContext中.Servl
34、etContext對象時全局的對象.服務器啟動的時候創建的.在創建ServletContext的時候就加載Spring的環境.* ServletContextListener:用于監聽ServletContext對象的創建和銷毀的.導入;spring-web-3.2.0.RELEASE.jar在web.xml中配置: <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param>修改程序的代碼:WebApplicationContext applicationContext = WebApplicationConte
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 筆的制造生產過程優化與仿真技術考核試卷
- 紙板容器工廠環境噪聲治理考核試卷
- 石棉水泥制品的國內外質量標準對比考核試卷
- 外科個案護理專題分析
- 新生兒高膽紅素血癥業務查房
- 腦癱患者麻醉管理規范
- Heneicomycin-生命科學試劑-MCE
- 湖北省2025年中考第三次模擬考試道德與法治試卷(解析版)
- 房地產行業深度報告-“好房子”系列專題一:四代宅崛起政策紅利與產品創新驅動居住升級
- 2025年下半年食品飲料行業寒來暑往結構破局
- 變電工程施工合同協議書
- 電工技術-北京科技大學中國大學mooc課后章節答案期末考試題庫2023年
- 星海音樂學院樂理試題A卷
- 2019年4月27日山東省紀委監委遴選公務員考試真題及答案
- ktv包房服務員崗位職責8篇
- 西安某大跨度鋼桁架人行天橋結構設計分析
- 新疆全部及全國部分加氣站分布情況6
- 初中學段勞動任務清單(七到九年級)
- 2023年中國各地磁偏角
- 六維領導力專題知識
- 【護士資格考試】云南省精神病醫院模擬檢測練習題
評論
0/150
提交評論