spring4_day01講義.doc_第1頁
spring4_day01講義.doc_第2頁
spring4_day01講義.doc_第3頁
spring4_day01講義.doc_第4頁
spring4_day01講義.doc_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Spring_day01 總結今日任務 使用 Spring 完成對客戶的保存操作教學導航教學目標教學方法案例驅動法案例一使用Spring的IOC完成保存客戶的操作:1.1 案例需求1.1.1 需求概述CRM 系統中客戶信息管理模塊功能包括:新增客戶信息客戶信息查詢修改客戶信息刪除客戶信息本功能要實現新增客戶,頁面如下:1.2 相關知識點1.1.1 Spring 的概述: 什么是 Spring :Spring 是一個開源框架,Spring 是于 2003 年興起的一個輕量級的 Java 開發(fā)框架,由 Rod Johnson在其著作 Expert One-On-One J2EE Development and Design 中闡述的部分理念和原型衍生而來。它是為了解決企業(yè)應用開發(fā)的復雜性而創(chuàng)建的。框架的主要優(yōu)勢之一就是其分層架構,分層架構允許使用者選擇使用哪一個組件,同時為 J2EE 應用程序開發(fā)提供集成的框架。Spring 使用基本的 JavaBean 來完成以前只可能由 EJB 完成的事情。然而,Spring 的用途不僅限于服務器端的開發(fā)。從簡單性、可測試性和松耦合的角度而言,任何 Java 應用都可以從 Spring 中受益。Spring 的核心是控制反轉(IoC)和面向切面(AOP)。簡單來說,Spring 是一個分層的 JavaSE/EEfull-stack(一站式) 輕量級開源框架。EE 開發(fā)分成三層結構: * WEB 層:Spring MVC.* 業(yè)務層:Bean 管理:(IOC)* 持久層:Spring 的 JDBC 模板.ORM 模板用于整合其他的持久層框架.Expert One-to-One J2EE Design and Development:J2EE 的設計和開發(fā):(2002.EJB)Expert One-to-One J2EE Development without EJB:J2EE 不使用 EJB 的開發(fā). 為什么學習 Spring:方便解耦,簡化開發(fā)Spring 就是一個大工廠,可以將所有對象創(chuàng)建和依賴關系維護,交給 Spring 管理 AOP 編程的支持Spring 提供面向切面編程,可以方便的實現對程序進行權限攔截、運行監(jiān)控等功能聲明式事務的支持只需要通過配置就可以完成對事務的管理,而無需手動編程方便程序的測試Spring 對 Junit4 支持,可以通過注解方便的測試 Spring 程序方便集成各種優(yōu)秀框架Spring 不排斥各種優(yōu)秀的開源框架,其內部提供了對各種優(yōu)秀框架(如:Struts、Hibernate、MyBatis、Quartz 等)的直接支持降低 JavaEE API 的使用難度Spring 對 JavaEE 開發(fā)中非常難用的一些 API(JDBC、JavaMail、遠程調用等),都提供了封裝,使這些 API 應用難度大大降低 Spring 的版本:Spring 3.X 和 Spring4.X1.2.2 Spring 的入門案例:(IOC) IOC 的底層實現原理IOC:Inversion of Control 控制反轉. 指的是 對象的創(chuàng)建權反轉(交給)給 Spring.作用是實現了程序的解耦合. 步驟一:下載 Spring 的開發(fā)包:官網:http:/spring.io/下載地址:/libs-release-local/org/springframework/spring解壓:(Spring 目錄結構:)* docs:API 和開發(fā)規(guī)范.* libs:jar 包和源碼.* schema:約束. 步驟二:創(chuàng)建 web 項目,引入 Spring 的開發(fā)包: 步驟三:引入相關配置文件:pertiesapplicationContext.xml引入約束:spring-framework-4.2.4.RELEASEdocsspring-framework-referencehtmlxsd-configur ation.html 步驟四:編寫相關的類:public interface UserDao public void sayHello();public class UserDaoImpl implements UserDao Overridepublic void sayHello() System.out.println(Hello Spring.); 步驟五:完成配置: 步驟六:編寫測試程序:Test/ Spring 的方式: public void demo2()/ 創(chuàng)建 Spring 的工廠類:ApplicationContextapplicationContext=newClassPathXmlApplicationContext(applicationContext.xml);/ 通過工廠解析 XML 獲取 Bean 的實例.UserDao userDao = (UserDao) applicationContext.getBean(userDao);userDao.sayHello(); IOC 和 DI:IOC :Inverse Of Control控制反轉,將對象的創(chuàng)建權交給了 Spring.DI:Dependency Injection 依賴注入.需要有 IOC 的環(huán)境,Spring 創(chuàng)建這個類的過程中,Spring 將類的依賴的屬性設置進去.1.2.3 Spring 中的工廠(容器): ApplicationContext:ApplicatioContext 接口有兩個實現類:ClassPathXmlApplicationContext:加載類路徑下 Spring 的配置文件.FileSystemXmlApplicationContext:加載本地磁盤下 Spring 的配置文件. BeanFactory(過時): BeanFactory 和 ApplicationContext 的區(qū)別:BeanFactory:是在 getBean 的時候才會生成類的實例.ApplicationContext:在加載 applicationContext.xml(容器啟動)時候就會創(chuàng)建.1.2.4 配置 STS 的 XML 的提示: Spring 配置文件中提示的配置復制路徑:* /schema/beans/spring-beans.xsd查找 XML Catalog:點擊 Add.1.2.5 Spring 的相關配置: id 屬性和 name 屬性標簽的配置id:Bean 起個名字.在約束中采用 ID 的約束:唯一. 必須以字母開始,可以使用字母、數字、連字符、下劃線、句話、冒號 id:不能出現特殊字符.name:Bean 起個名字.沒有采用 ID 的約束. name:出現特殊字符.如果沒有 id 的話 , name 可以當做 id 使用.* 整合 struts1 的時候: scope 屬性:Bean 的作用范圍.* singleton:默認值,單例的.* prototype:多例的.* request:WEB 項目中,Spring 創(chuàng)建一個 Bean 的對象,將對象存入到 request 域中.* session:WEB 項目中,Spring 創(chuàng)建一個 Bean 的對象,將對象存入到 session 域中.* globalSession :WEB 項目中,應用在 Porlet 環(huán)境.如果沒有 Porlet 環(huán)境那么 globalSession 相當于 session. Bean 的生命周期的配置:通過配置標簽上的 init-method 作為 Bean 的初始化的時候執(zhí)行的方法,配置 destroy-method作為 Bean 的銷毀的時候執(zhí)行的方法。銷毀方法想要執(zhí)行,需要是單例創(chuàng)建的 Bean 而且在工廠關閉的時候,Bean 才會被銷毀.1.2.6 Spring 的 Bean 的管理 XML 的方式: Spring 生成 Bean 的時候三種方式(了解)【無參數的構造方法的方式:】【靜態(tài)工廠實例化的方式】提供一個工廠類:public class Bean2Factory public static Bean2 getBean2()return new Bean2();【實例工廠實例化的方式】提供 Bean3 的實例工廠:public class Bean3Factory public Bean3 getBean3()return new Bean3(); Spring 的 Bean 的屬性注入:【構造方法的方式注入屬性】【set 方法的方式注入屬性】 Spring 的屬性注入:對象類型的注入: 名稱空間 p 的屬性注入的方式:Spring2.x 版本后提供的方式.第一步:引入 p 名稱空間第二步:使用 p 名稱空間.* 普通屬性:p:屬性名稱=”* 對象類型屬性:p:屬性名稱-ref=” SpEL 的方式的屬性注入:Spring3.x 版本后提供的方式.SpEL:Spring Expression Language.語法:# SpEL 引用了另一個類的屬性!- - 注入復雜類型: 會希冠希天一芙蓉如花鳳姐root1 Spring 的分配置文件的開發(fā)一種:創(chuàng)建工廠的時候加載多個配置文件:ApplicationContext applicationContext = new ClassPathXmlApplicationContext(applicationContext.xml,applicationContext2.xml);二種:在一個配置文件中包含另一個配置文件:1.3 案例代碼1.3.1 搭建環(huán)境: 創(chuàng)建 web 項目,引入 jar 包.WEB 層使用 Struts2:* Struts2 開發(fā)的基本的包Spring 進行 Bean 管理:* Spring 開發(fā)的基本的包 引入配置文件:Struts2:* web.xml struts2org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFil terstruts2/* struts.xmlSpring:* applicationContext.xml* perties 引入頁面: 創(chuàng)建包結構和類: 在添加頁面提交內容到 Action: 改寫 Action 類并配置 Action: 在 Action 調用業(yè)務層:將業(yè)務層類配置到 Spring 中:在 Action 中獲取業(yè)務層類: public String save()System.out.println(Action 中的 save 方法執(zhí)行了.); System.out.println(customer);/ 傳統方式:/*CustomerService customerService = new CustomerServiceImpl(); customerService.save(customer);*/ Spring 的方式進行操作:ApplicationContext applicationContext = new ClassPathXmlApplicationContext(applicationContext.xml);CustomerService customerService = (CustomerService) applicationContext.getBean(customerService);customerService.save(customer);return NONE;* 每次請求都會創(chuàng)建一個工廠類,服務器端的資源就浪費了,一般情況下一個工程只有一個 Spring 的工廠類就 OK 了.* 將工廠在服務器啟動的時候創(chuàng)建好,將這個工廠放入到 ServletContext 域中.每次獲取工廠從ServletContext 域中進行獲取.* ServletContextLinstener:監(jiān)聽 ServletContext 對象的創(chuàng)建和銷毀.1.3.2 Spring 整合 WEB 項目 引入 spring-web.jar 包:配置監(jiān)聽器:org.springframework.web.context.ContextLoaderListenercontextConfigLocationclasspath:applicationContext.xml 改寫 Action:/* 保存客戶的執(zhí)行的方法:save */public String save()/ 傳統方式:/*CustomerService customerService = new CustomerServiceImpl(); customerService.save(customer);*/ Spring 的方式進行操作:/*ApplicationContext applicationContext = new ClassPathXmlApplicationContext(applicationContext.xml);CustomerService cus

溫馨提示

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

評論

0/150

提交評論