01-第一天spring day01教案11能夠知道解耦的演變過程_第1頁
01-第一天spring day01教案11能夠知道解耦的演變過程_第2頁
01-第一天spring day01教案11能夠知道解耦的演變過程_第3頁
01-第一天spring day01教案11能夠知道解耦的演變過程_第4頁
01-第一天spring day01教案11能夠知道解耦的演變過程_第5頁
已閱讀5頁,還剩48頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Spring day01學(xué)習(xí)目標(biāo)(1) 能夠知道解耦的演變過程(2) 能夠清晰描述出 IOC 相關(guān)思想(3) 能夠搭建 spring 的開發(fā)環(huán)境(4) 能夠使用 xml 的方式完成依賴注入配置學(xué)習(xí)指南spring 的概述程序的耦合及解耦I(lǐng)OC 概念和 spring 中的 IOC(重點)依賴注入(Dependency Injection)(重點)1 第一堂課本節(jié)知識點spring 概述spring 發(fā)展歷程spring 的優(yōu)勢spring 的體系結(jié)構(gòu)編寫 jdbc 的工程代碼用于分析程序的耦合編譯期依賴本標(biāo)能夠說出 spring 框架的優(yōu)點描述出 spring 框架的體系結(jié)構(gòu)知道代碼編譯期的依賴

2、時間:30 分 52 秒1.1 spring 課程四天安排1.1.1知識概述介紹 spring 課程安排,4 天內(nèi)容大概描述詳情.3總結(jié)與補充spring 共四天第一天:spring 框架的概述以及 spring 中基于 XML 的 IOC 配置第二天:spring 中基于注解的 IOC 和 ioc 的案例第三天:spring 中的 aop 和基于 XML 以及注解的 AOP 配置第四天:spring 中的 JdbcTemlate 以及 Spring 事務(wù)控制1.1.4無1.1.5習(xí)題無1.2今日課程內(nèi)容介紹1.2.1知識概述當(dāng)日內(nèi)容的課程內(nèi)容概述詳情.3總結(jié)與

3、補充1、spring 的概述spring 是什么spring 的兩大spring 的發(fā)展歷程和優(yōu)勢spring 體系結(jié)構(gòu)2、程序的耦合及解耦曾經(jīng)案例中問題工廠模式解耦3、IOC 概念和 spring 中的 IOCspring 中基于 XML 的 IOC 環(huán)境搭建4、依賴注入(Dependency Injection) 5、作業(yè):1.2.4無1.2.5習(xí)題無1.3 spring 概述1.3.1知識概述Spring 框架的概述詳情.3總結(jié)與補充spring 是什么?Spring 是分層的 Java SE/EE 應(yīng)用 full-stack 輕量級開源框架,以 IoC(Inverse

4、Of Control:反轉(zhuǎn)控制)和 AOP(Aspect Oriented Programming:面向切面編程)為內(nèi)核,提供了展現(xiàn)層SpringMVC 和持久層 Spring JDBC 以及業(yè)務(wù)層事務(wù)管理等眾多的企業(yè)級應(yīng)用技術(shù),還能整合開源世界眾多著名的第框架和類庫,逐漸成為使用最多的 Java EE 企業(yè)應(yīng)用開源框架。1.3.4無1.3.5習(xí)題無1.4 spring 發(fā)展歷程1.4.1知識概述Spring 框架的發(fā)展歷史,及歷史版本詳情.3總結(jié)與補充Spring的發(fā)展歷程1997 年 IBM 提出了 EJB 的思想1998 年,SUN 制定開發(fā)標(biāo)準(zhǔn)規(guī)范EJB1.01999

5、年,EJB1.12001 年,EJB2.02003 年,EJB2.12006 年,EJB3.0發(fā)布發(fā)布發(fā)布發(fā)布Rod Johnson ( spring 之父)Expert One-to-One J2EE Design and Development(2002) 闡述了 J2EE 使用 EJB 開發(fā)設(shè)計的優(yōu)點及解決方案Expert One-to-One J2EE Development without EJB(2004)闡述了 J2EE 開發(fā)不使用 EJB 的解決方式(Spring 雛形)7 2017年 9 9月份發(fā)布了 g spring的最新版本 0 spring 5.0通用版(GA)1.4.

6、4無1.4.5習(xí)題無1.5 spring 的優(yōu)勢1.5.1知識概述Spring 框架的優(yōu)勢有哪些詳情.3總結(jié)與補充spring的優(yōu)勢方便解耦,簡化開發(fā)通過 Spring 提供的 IoC 容器,可以將對象間的依賴關(guān)系交由Spring 進行控制,避免硬編碼所造成的過度程序耦合。用戶也不必再為單例模式類、屬性文件的需求編寫代碼,可以更專注于上層的應(yīng)用。AOP 編程的支持等這些很底層通過 Spring 的AOP 功能,方便進行面向切面的編程,許多不容易用傳統(tǒng) OOP 實現(xiàn)的功能可以通過 AOP 輕松應(yīng)付。式事務(wù)的支持可以將我們從單調(diào)煩悶的事務(wù)管理代碼中解脫出來,通過管理,提高開發(fā)效率和

7、質(zhì)量。方便程序的測試式方式靈活的進行事務(wù)的可以用非容器依賴的編程方式進行幾乎所有的測試工作,測試不再是昂貴的操作,而是隨手可做的事情。方便集成各種優(yōu)秀框架Spring 可以降低各種框架的使用難度,提供了對各種優(yōu)秀框架(Struts、Hibernate、Hessian、Quartz 等)的直接支持。降低 JavaEE API 的使用難度Spring 對 JavaEE API(如 JDBC、JavaMail、API 的使用難度大為降低。Java 源碼是經(jīng)典學(xué)習(xí)范例調(diào)用等)進行了薄薄的封裝層,使這些Spring 的源代碼設(shè)計精妙、結(jié)構(gòu)清晰、匠心獨用,處處體現(xiàn)著大師對 Java 設(shè)計模式靈活運用以及對

8、 Java 技術(shù)的高深造詣。它的源代碼無意是 Java 技術(shù)的最佳實踐的范例。1.5.4無1.5.5習(xí)題無1.6 spring 的體系結(jié)構(gòu)1.6.1知識概述看圖講解 spring 的體系結(jié)構(gòu)詳情.3總結(jié)與補充1.6.4無1.6.5習(xí)題無1.7 編寫 jdbc 的工程代碼用于分析程序的耦合1.7.1知識概述編寫 jdbc 代碼連接,分析代碼中的耦合詳情.3總結(jié)與補充1.7.4無1.7.5習(xí)題無1.8 編譯期依賴1.8.1知識概述代碼耦合中的編譯器依賴分析詳情.3總結(jié)與補充找不到依賴的情況下,是編譯不過去的。存在耦合。1.8.4無1.8.5習(xí)題無2

9、第二堂課本節(jié)知識點2.1 程序的耦合和解耦的思路分析 12.2 曾經(jīng)代碼中的問題分析2.3 編寫工廠類和配置文件2.4 工廠模式解耦本標(biāo)能夠清楚程序中的耦合及解決耦合的思路能夠知道當(dāng)前代碼存在的問題能夠知道為什么要創(chuàng)建工廠類來創(chuàng)建對象并編寫工廠類中的代碼時間:35 分 55 秒2.1 程序的耦合和解耦的思路分析 12.1.1知識概述講解解耦合的思路詳情.3總結(jié)與補充2.1.4Ø 解決耦合的思路?2.1.5習(xí)題第一步:使用反射來創(chuàng)建對象,而避免使用 new 關(guān)鍵字。第二步:通過配置文件來獲取要創(chuàng)建的對象全限定類名2.2 曾經(jīng)代碼中的問題分析2.2.1知識概述分析直接依賴

10、 new 的問題詳情.3總結(jié)與補充創(chuàng)建業(yè)務(wù)層接口和實現(xiàn)類創(chuàng)建持久層接口和實現(xiàn)類模擬表現(xiàn)層2.2.4無2.2.5習(xí)題無2.3 編寫工廠類和配置文件2.3.1知識概述解決耦合第一步,編寫工廠類及配置文件詳情.3總結(jié)與補充創(chuàng)建 BeanFactory 類一個創(chuàng)建 Bean 對象的工廠Bean:在計算機英語中,有可重用組件的含義。JavaBean:用 java 語言編寫的可重用組件。javabean >實體類它就是創(chuàng)建我們的 service 和 dao 對象的。第一個:需要一個配置文件來配置我們的 service 和 dao創(chuàng)建一個 perties

11、.5習(xí)題2.4 工廠模式解耦2.4.1知識概述創(chuàng)建工廠來解決代碼中的耦合詳情2.4.2配置的內(nèi)容:唯一標(biāo)識=全限定類名(key=value) 第二個:通過配置文件中配置的內(nèi)容,反射創(chuàng)建對象配置文件可以是 xml 也可以是 properties2.4.3總結(jié)與補充BeanFactory.java 文件測試類:2.4.4無2.4.5習(xí)題無3 第三堂課本節(jié)知識點3.1 分析工廠模式中的問題并改造3.2 工廠模式解耦的升級版3.3 ioc 的概念和作用3.4 spring 中的 Ioc 前期準(zhǔn)備本標(biāo)能夠清楚編寫工廠類的作用能夠清楚 IOC 解決的問題知道 spring 的版本,jdk

12、與 tomcat 的版本時間:25 分 55 秒3.1 分析工廠模式中的問題并改造3.1.1知識概述目前工廠存在的問題,進行改造詳情.3總結(jié)與補充*特別注意:最后有代碼錯誤并沒有解決,直接結(jié)束了,在(14 工廠模式解耦的升級版.avi)中解決了代碼錯誤,沒有單獨進行說明,關(guān)于總結(jié),請看下個總結(jié)*3.1.4無3.1.5習(xí)題無3.2 工廠模式解耦的升級版3.2.1知識概述最終的工廠模式解耦的思路及代碼實現(xiàn)詳情.3總結(jié)與補充BeanFactory 代碼public class BeanFactory /定義一個 Properties 對象private static

13、Properties props;/定義一個 Map,用于存放我們要創(chuàng)建的對象。我們把它稱之為容器private static Map<String,Object> beans;/使用靜態(tài)代碼塊為 Properties 對象賦值static try /實例化對象props = new Properties();/獲取 properties 文件的流對象InputStreamin= BeanFactory.class.getClassLoader().getResourceAsStream("perties");props.load(in);/實例

14、化容器beans = new HashMap<String,Object>();/取出配置文件中所有的 Key Enumeration keys = props.keys();/遍歷枚舉while (keys.hasMoreElements()/取出每個 KeyString key = keys.nextElement().toString();/根據(jù) key 獲取 valueString beanPath = props.getProperty(key);/反射創(chuàng)建對象Object value = Class.forName(beanPath).newInstance();/把

15、key 和 value 存入容器中beans.put(key,value);catch(Exception e)throw new ExceptionInInitializerError("初始化 properties 失??!");/* 根據(jù) bean 的名稱獲取對象* param beanName* return*/public static Object getBean(String beanName) return beans.get(beanName);/* 根據(jù)Bean 的名稱獲取 bean 對象* param beanName* returnpublic sta

16、tic Object getBean(String beanName) Object bean = null;try 測試代碼:AccountServiceImpl 代碼:測試代碼:public class Client public static void main(String args) /IAccountService as = new AccountServiceImpl(); for(int i=0;i<5;i+) IAccountService as = (IAccountService) BeanFactory.getBean("accountService&q

17、uot;); System.out.println(as);as.saveAccount();/* 賬戶的業(yè)務(wù)層實現(xiàn)類*/public class AccountServiceImpl implements IAccountService /private IAccountDao accountDao = new AccountDaoImpl();private IAccountDao accountDao = (IAccountDao)BeanFactory.getBean("accountDao");/private int i = 1;public voidsaveA

18、ccount() int i = 1;accountDao.saveAccount(); System.out.println(i);i+;String beanPath = props.getProperty(beanName);/System.out.println(beanPath);bean = Class.forName(beanPath).newInstance();/每次都會調(diào)用默認(rèn)構(gòu)造函數(shù)創(chuàng)建對象catch (Exception e)e.printStackTrace();return bean;*/3.2.4無3.2.5習(xí)題無3.3 ioc 的概念和作用3.3.1知識概述描述

19、 ioc 的概念及解決的問題詳情.3總結(jié)與補充3.3.4Ioc 的作用是什么?3.3.5習(xí)題削減計算機程序的耦合(解除我們代碼中的依賴關(guān)系)。3.4 spring 基于 XML 的 IOC 環(huán)境搭建和入門3.4.1知識概述搭建 spring 開發(fā)的環(huán)境,及環(huán)境要求詳情.3總結(jié)與補充案例的前期準(zhǔn)備本章我們使用的案例是,賬戶的業(yè)務(wù)層和持久層的依賴關(guān)系解決。在開始spring 的配置之前,我們要先準(zhǔn)備一下環(huán)境。由于我們是使用 spring 解決依賴關(guān)系,并不是真正的要做增刪改查操作,所以此時我們沒必要寫實體類。并且我們在此處使用的是 java 工程,不是 java w

20、eb 工程。前期的準(zhǔn)備: 官網(wǎng):地址:解壓:(Spring 目錄結(jié)構(gòu):)* docs :API 和開發(fā)規(guī)范.* libs :jar 包和源碼.* schema :約束.我們上課使用的版本是 是 spring5.0.2 。特別說明:spring5 版本是用 jdk8 編寫的,所以要求我們的 jdk 版本是同時 tomcat 的版本要求 8.5 及以上。8 及以上。3.4.4無3.4.5習(xí)題無4 第四堂課本節(jié)知識點4.1 spring 基于 XML 的 IOC 環(huán)境搭建和入門4.2 ApplicationContext 的三個實現(xiàn)類4.3 BeanFactory 和 ApplicationCont

21、ext 的區(qū)別本標(biāo)能夠搭建 IOC 的環(huán)境,知道導(dǎo)入哪些 jar 包清晰知道實現(xiàn)類的具體功能,區(qū)別知道 BeanFactory 和 ApplicationContext 兩個接口的區(qū)別時間:33 分 03 秒4.1 spring 基于 XML 的 IOC 環(huán)境搭建和入門4.1.1知識概述編寫轉(zhuǎn)賬案例代碼詳情.3總結(jié)與補充創(chuàng)建業(yè)務(wù)層接口和實現(xiàn)類創(chuàng)建持久層接口和實現(xiàn)類導(dǎo)入依賴:創(chuàng)建 bean.xml 文件,讓 spring 來管理兩個對象的創(chuàng)建測試代碼:4.1.4無4.1.5習(xí)題無4.2 ApplicationContext 的三個實現(xiàn)類4.2.1知識概述ClassPathXmlA

22、pplicationContext: FileSystemXmlApplicationContextAnnotationConfigApplicationContext三個實現(xiàn)類的講解詳情.3總結(jié)與補充ApplicationContext 的三個常用實現(xiàn)類:ClassPathXmlApplicationContext:它可以加載類路徑下的配置文件,要求配置文件必須在類路徑下。不在的話,加載不了。(更常用)FileSystemXmlApplicationContext:它可以加載磁盤任意路徑下的配置文件(必須有權(quán)限)AnnotationConfigApplicationConte

23、xt:它是用于注解創(chuàng)建容器的,是明天的內(nèi)容。4.2.4無4.2.5習(xí)題無4.3 BeanFactory 和 ApplicationContext 的區(qū)別4.3.1知識概述BeanFactory 和 ApplicationContext 的區(qū)別,代碼測試區(qū)別詳情.3總結(jié)與補充BeanFactory 和 和 ApplicationContext的區(qū)別BeanFactory 才是 Spring 容器中的頂層接口。ApplicationContext 是它的子接口。BeanFactory 和 ApplicationContext 的區(qū)別: 創(chuàng)建對象的時間點不一樣。Application

24、Context:只要一配置文件,默認(rèn)情況下就會創(chuàng)建對象。BeanFactory:什么使用什么時候創(chuàng)建對象。4.3.4無4.3.5習(xí)題無5 第五堂課本節(jié)知識點5.1 spring 中 bean 的細(xì)節(jié)之三種創(chuàng)建 Bean 對象的方式5.2 spring 中 bean 的細(xì)節(jié)之作用范圍5.3 spring 中 bean 的細(xì)節(jié)之生命周期本標(biāo)清楚 spring 實例化對象的三種方式能夠描述 bean 的五種作用范圍能夠知道 bean 的單例和多例的生命周期時間:42 分 27 秒5.1 spring 中 bean 的細(xì)節(jié)之三種創(chuàng)建 Bean 對象的方式5.1.1知識概述Bean 的創(chuàng)建方式無參構(gòu)造,

25、靜態(tài)工廠,實例工廠詳情.3總結(jié)與補充第式:使用默認(rèn)無參構(gòu)造函數(shù)<!-在默認(rèn)情況下:它會根據(jù)默認(rèn)無參構(gòu)造函數(shù)來創(chuàng)建類對象。如果構(gòu)造函數(shù),將會創(chuàng)建失敗。->bean 中沒有默認(rèn)無參<bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl"/>5.1.4無5.1.5習(xí)題無5.2 spring 中 bean 的細(xì)節(jié)之作用范圍5.2.1知識概述講解 spring 中的 bean 的作用范圍,scope 的值選擇詳情

26、.3總結(jié)與補充作用:用于配置對象讓 spring 來創(chuàng)建的。默認(rèn)情況下它調(diào)用的是類中的無參構(gòu)造函數(shù)。如果沒有無參構(gòu)造函數(shù)則不能創(chuàng)建成功。屬性:id:給對象在容器中提供一個唯一標(biāo)識。用于獲取對象。class:指定類的全限定類名。用于反射創(chuàng)建對象。默認(rèn)情況下調(diào)用無參構(gòu)造函數(shù)。scope:指定對象的作用范圍。* singleton :默認(rèn)值,單例的.* prototype :多例的.* request:WEB 項目中,Spring 創(chuàng)建一個* session:WEB 項目中,Spring 創(chuàng)建一個Bean 的對象,將對象存入到Bean 的對象,將對象存入到request 域中. session 域中

27、.* global session:WEB 項目中,應(yīng)用在 Portlet 環(huán)境.如果沒有 Portlet 環(huán)境那么globalSession 相當(dāng)于 session.init-method:指定類中的初始化方法名稱。destroy-method:指定類中銷毀方法名稱。5.2.4無5.2.5習(xí)題無5.3 spring 中 bean 的細(xì)節(jié)之生命周期5.3.1知識概述詳細(xì)講解 bean 單例和多例的生命周期詳情.3總結(jié)與補充bean 對象的生命周期單例對象出生:當(dāng)容器創(chuàng)建時對象出生活著:只要容器還在,對象一直活著:容器銷毀,對象消亡總結(jié):單例對象的生命周期和容器相同多例對象出生:當(dāng)我們使用對象時 spring 框架為我們創(chuàng)建活著:對象只要是在使用過程中就一直活著。:當(dāng)對象長時間不用,且沒有別的對象器回收時,由 Java 的回收5.3.4無5.3.5習(xí)題無6 第六堂課本節(jié)知識點6.1 spring 的依賴注入6.2 構(gòu)造函數(shù)注入6.3 構(gòu)造函數(shù)注入6.4 set 方法注入6.5 注入集合數(shù)據(jù)6.

溫馨提示

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

評論

0/150

提交評論