




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第6章初識Spring框架《JavaEE企業(yè)級應(yīng)用開發(fā)教程(Spring+SpringMVC+MyBatis)(第2版)》學(xué)習(xí)目標(biāo)/Target
了解Spring框架及其優(yōu)點
了解Spring框架的體系結(jié)構(gòu)與Spring5的新特性
熟悉Spring框架的下載及目錄結(jié)構(gòu)
學(xué)習(xí)目標(biāo)/Target
掌握Spring框架入門程序的編寫
理解控制反轉(zhuǎn)的概念
掌握依賴注入的概念、類型和應(yīng)用
章節(jié)概述/Summary
Spring致力于解決JavaEE應(yīng)用中的各種問題,對于一個Java開發(fā)者來說,Spring框架的熟練使用是必備的技能之一。Spring具有良好的設(shè)計和分層結(jié)構(gòu),它克服了傳統(tǒng)重量型框架臃腫、低效的劣勢,大大簡化了項目開發(fā)中的技術(shù)復(fù)雜性。本章將對Spring框架的基礎(chǔ)知識進行詳細(xì)地講解。
目錄/Contents010203Spring介紹Spring的入門程序控制反轉(zhuǎn)與依賴注入Spring介紹6.16.1.1Spring概述先定一個小目標(biāo)!
先定一個小目標(biāo)!了解什么是Spring,能夠說出Spring的作用STEP01
Spring是由RodJohnson組織和開發(fā)的一個分層的JavaSE/EE一站式(full-stack)輕量級開源框架。它最為核心的理念是IoC(控制反轉(zhuǎn))和AOP(面向切面編程),其中,IoC是Spring的基礎(chǔ),它支撐著Spring對JavaBean的管理功能;AOP是Spring的重要特性,AOP是通過預(yù)編譯方式和運行期間動態(tài)代理實現(xiàn)程序功能,也就是說可以在不修改源代碼的情況下,給程序統(tǒng)一添加功能。STEP03String框架的核心技術(shù)6.1.1Spring概述STEP01(1)在表現(xiàn)層它提供了SpringMVC框架,并且Spring還可以與Struts框架整合。(2)在業(yè)務(wù)邏輯層可以管理事務(wù)、記錄日志等。(3)在持久層可以整合MyBatis、Hibernate、JdbcTemplate等技術(shù)。STEP03String在表現(xiàn)層、業(yè)務(wù)邏輯層和持久層的作用6.1.1Spring概述6.1.2Spring框架的優(yōu)點先定一個小目標(biāo)!
先定一個小目標(biāo)!了解Spring框架的優(yōu)點,能夠說出Spring框架的優(yōu)點STEP01
Spring作為JavaEE的一個全方位應(yīng)用程序框架,為開發(fā)企業(yè)級應(yīng)用提供了一個健壯、高效的解決方案。它不僅可以應(yīng)用于Java應(yīng)用的開發(fā),也可以應(yīng)用于服務(wù)器端開發(fā)。Spring之所以得到如此廣泛應(yīng)用,是因為Spring框架具有以下幾個優(yōu)點。STEP03String框架的作用6.1.2Spring框架的優(yōu)點STEP01
Spring是一種非侵入式(non-invasive)框架,所謂非侵入式是指Spring框架的API不會在業(yè)務(wù)邏輯上出現(xiàn),也就是說業(yè)務(wù)邏輯應(yīng)該是純凈的,不能出現(xiàn)與業(yè)務(wù)邏輯無關(guān)的代碼。由于業(yè)務(wù)邏輯中沒有Spring的API,所以業(yè)務(wù)邏輯代碼也可以從Spring框架快速地移植到其他框架。STEP03String框架的優(yōu)點:a.非侵入式設(shè)計6.1.2Spring框架的優(yōu)點STEP01
Spring就是一個大工廠,可以將所有對象的創(chuàng)建和依賴關(guān)系的維護工作都交給Spring容器管理,大大降低了組件之間的耦合性。STEP03String框架的優(yōu)點:b.降低耦合性6.1.2Spring框架的優(yōu)點STEP01
Spring提供了對AOP的支持,AOP可以將一些通用的任務(wù)進行集中處理,如安全、事務(wù)和日志等,以減少通過傳統(tǒng)OOP方法帶來的代碼冗余和繁雜。STEP03String框架的優(yōu)點:c.支持AOP編程6.1.2Spring框架的優(yōu)點STEP01
在Spring中,可以直接通過Spring配置文件管理數(shù)據(jù)庫事務(wù),省去了手動編程的繁瑣,提高了開發(fā)效率。STEP03String框架的優(yōu)點:d.支持聲明式事務(wù)6.1.2Spring框架的優(yōu)點STEP01
Spring提供了對Junit的支持,開發(fā)人員可以通過Junit進行單元測試。STEP03String框架的優(yōu)點:e.方便程序的測試6.1.2Spring框架的優(yōu)點STEP01
Spring提供了一個廣闊的基礎(chǔ)平臺,其內(nèi)部提供了對各種框架的直接支持,如Struts、Hibernate、MyBatis、Quartz等,這些優(yōu)秀框架可以與Spring無縫集成。STEP03String框架的優(yōu)點:f.方便集成框架6.1.2Spring框架的優(yōu)點STEP01
Spring對JavaEE開發(fā)中的一些API(如JDBC、JavaMail等)都進行了封裝,大大降低了這些API的使用難度。STEP03String框架的優(yōu)點:g.降低JavaEEAPI的使用難度6.1.2Spring框架的優(yōu)點6.1.3Spring的體系結(jié)構(gòu)先定一個小目標(biāo)!
先定一個小目標(biāo)!了解Spring的體系結(jié)構(gòu),能夠說出Spring的體系結(jié)構(gòu)中的主要模塊STEP01STEP03Spring的體系結(jié)構(gòu)圖6.1.3Spring的體系結(jié)構(gòu)STEP01
Spring框架主要有8大模塊,每個大模塊由多個或1個小模塊組成,如Spring的核心容器模塊(CoreContainer)是由Beans模塊、Core模塊、Context模塊和SpEL模塊組成。下面結(jié)合String的體系結(jié)構(gòu)圖對Spring體系結(jié)構(gòu)中的主要模塊進行簡單介紹。
STEP03Spring5框架組成模塊6.1.3Spring的體系結(jié)構(gòu)STEP01
核心容器模塊在Spring的功能體系中起著支撐性作用,是其他模塊的基石。核心容器層主要由Beans模塊、Core模塊、Contex模塊和SpEL模塊組成。STEP03a.核心容器模塊(CoreContainer)6.1.3Spring的體系結(jié)構(gòu)STEP01(1)Beans模塊。它提供了BeanFactory類,是工廠模式的經(jīng)典實現(xiàn),Beans模塊的主要作用是創(chuàng)建和管理Bean對象。(2)Core模塊。它提供了Spring框架的基本組成部分,包括IoC和DI功能。(3)Context模塊。它構(gòu)建于Beans模塊和Core模塊的基礎(chǔ)之上,它可以通過ApplicationContext接口提供上下文信息。(4)SpEL模塊。它是Spring3.0后新增的模塊,提供了對SpEL表達式語言(SpringExpressionLanguage)的支持,SpEL表達式語言是一個在程序運行時支持操作對象圖的表達式語言。STEP03核心容器模塊各模塊組成6.1.3Spring的體系結(jié)構(gòu)STEP01
數(shù)據(jù)訪問及集成模塊用于訪問和操作數(shù)據(jù)庫中的數(shù)據(jù),它主要包含JDBC模塊、ORM模塊、OXM模塊、JMS模塊和Transactions模塊。STEP03b.數(shù)據(jù)訪問及集成模塊(DataAccess/Integration)6.1.3Spring的體系結(jié)構(gòu)STEP01(1)
JDBC模塊。它提供了一個JDBC的抽象層,消除了冗長的JDBC編碼并能夠解析數(shù)據(jù)庫供應(yīng)商特有的錯誤代碼。(2)ORM模塊。它為主流的對象關(guān)系映射API提供了集成層,用于集成主流的對象關(guān)系映射框架。(3)OXM模塊。它提供了對XML映射的抽象層的支持,如JAXB、Castor等。(4)JMS模塊。它主要用于傳遞消息,包含消息的生產(chǎn)和消費。自4.1版本后,JMS模塊支持與Spring-message模塊的集成。(5)Transactions模塊。它的主要功能是事務(wù)管理。STEP03數(shù)據(jù)訪問及集成模塊各模塊組成6.1.3Spring的體系結(jié)構(gòu)STEP01
Web模塊的實現(xiàn)基于APPlicationContext基礎(chǔ)之上,它提供了Web應(yīng)用的各種工具類,包括了Web模塊、Servlet模塊、WebSocket模塊和Portlet模塊。STEP03c.Web模塊6.1.3Spring的體系結(jié)構(gòu)STEP01(1)
Web模塊。它提供了針對Web開發(fā)的集成特性,如大部分文件上傳功能等。此外,Web模塊還包含一個HTTP客戶端和Spring遠(yuǎn)程處理支持的Web相關(guān)部分。(2)Servlet模塊。它提供了Spring的模型、視圖、控制器以及Web應(yīng)用程序的RESTWeb服務(wù)實現(xiàn)。(3)WebSocket模塊。它是Spring4.0以后新增的模塊,它提供了WebSocket和SockJS的實現(xiàn),以及對STOMP的支持。(4)Portlet模塊。它類似Servlet模塊的功能,提供了Portlet環(huán)境下的MVC實現(xiàn)。STEP03Web模塊各模塊組成6.1.3Spring的體系結(jié)構(gòu)STEP01
Spring框架的其他模塊還有AOP模塊、Aspects模塊、Instrumentation模塊以及Test模塊。STEP03d.其他模塊6.1.3Spring的體系結(jié)構(gòu)STEP01(1)
AOP模塊。它提供了對面向切面編程的支持,程序可以定義方法攔截器和切入點,將代碼按照功能進行分離,以降低程序的耦合性。(2)Aspects模塊。它提供了與AspectJ集成的支持。(3)Instrumentation模塊。它提供了對類工具的支持,并且實現(xiàn)了類加載器,該模塊可以在特定的應(yīng)用服務(wù)器中使用。(4)Messaging模塊。它是Spring4.0以后新增的模塊,它提供了對消息傳遞體系結(jié)構(gòu)和協(xié)議的支持。(5)Test模塊。它提供了對程序單元測試和集成測試的支持。STEP03其他模塊各模塊組成6.1.3Spring的體系結(jié)構(gòu)6.1.4Spring
5的新特性先定一個小目標(biāo)!
先定一個小目標(biāo)!了解Spring
5的新特性,能夠說出Spring
5有哪些新特性STEP01
Spring
5是Spring當(dāng)前最新的版本,與歷史版本對比,Spring5對Spring核心框架進行了修訂和更新,增加了很多新特性,如支持響應(yīng)式編程等。STEP03Spring
5與其他版本的比較6.1.4Spring
5的新特性STEP01因為Spring
5代碼庫運行于JDK8之上,所以Spring
5對JDK的最低要求是JDK8,這可以促進Spring的使用者積極運用Java8新特性。STEP03Spring
5新特性:a.更新JDK基線6.1.4Spring
5的新特性STEP01(1)基于JDK8的反射增強,通過Spring5提供的方法可以更加高效的對類或類的參數(shù)進行訪問。
(2)核心的Spring接口提供了基于JDK8的默認(rèn)方法構(gòu)建的選擇性聲明。
(3)用@Nullable和@NotNull注解來表明可為空的參數(shù)以及返回值,可以在編譯時處理空值而不是在運行時拋出NullPointerExceptions異常。STEP03Spring
5新特性:b.修訂核心框架6.1.4Spring
5的新特性STEP01
Spring
5支持候選組件索引作為類路徑掃描的替代方案。從索引讀取實體類,會使加載組件索引開銷更低,因此,Spring程序的啟動時間將會縮減。STEP03Spring
5新特性:c.更新核心容器6.1.4Spring
5的新特性STEP01
響應(yīng)式編程是另外一種編程風(fēng)格,它專注于構(gòu)建對事件做出響應(yīng)的應(yīng)用程序。Spring5包含響應(yīng)流和Reactor(ReactiveStream的Java實現(xiàn)),響應(yīng)流和Reactor支撐了Spring自身的功能及相關(guān)API。STEP03Spring
5新特性:d.支持響應(yīng)式編程6.1.4Spring
5的新特性STEP01
Spring
5提供了一個函數(shù)式Web框架。該框架使用函數(shù)式編程風(fēng)格來定義端點,它引入了兩個基本組件:
HandlerFunction和RouterFunction。HandlerFunction
表示處理接收到的請求并生成響應(yīng)函數(shù);RouterFunction替代了@RequestMapping注解,用于將接收到的請求轉(zhuǎn)發(fā)到處理函數(shù)。STEP03Spring
5新特性:e.支持函數(shù)式Web框架6.1.4Spring
5的新特性STEP01
Spring5提供了對Kotlin語言的支持。Kotlin是一種支持函數(shù)式編程風(fēng)格的面向?qū)ο笳Z言,它運行在JVM之上,可以讓代碼更具有表現(xiàn)力、簡潔性和可讀性。有了對Kotlin的支持,開發(fā)人員可以進行深度的函數(shù)式Spring編程,這拓寬了Spring的應(yīng)用領(lǐng)域。STEP03Spring
5新特性:f.支持Kotlin6.1.4Spring
5的新特性STEP01
Spring5完全支持Junit5Jupiter,因此可以使用Junit5編寫測試代碼。除此之外,Spring
5還提供了在Spring
TestContext
Framework中進行并行測試的擴展。針對響應(yīng)式編程模型,Spring5引入了支持Spring
webFlux的WebTestClient集成測試。STEP03Spring
5新特性:g.提升測試功能6.1.4Spring
5的新特性6.1.5Spring的下載及目錄結(jié)構(gòu)先定一個小目標(biāo)!
先定一個小目標(biāo)!熟悉如何Spring下載以及Spring的目錄結(jié)構(gòu),能夠下載Spring并知道它目錄下存放的文件類別STEP01
Spring是一個獨立的框架,它不需要依賴任何Web服務(wù)器或容器,既可以在獨立的JavaSE項目中使用,也可以在JavaEE項目中使用。在使用Spring之前需要獲取它的jar包,這些jar包可以在Spring官網(wǎng)下載。STEP03Spring框架簡單介紹6.1.5Spring的下載及目錄結(jié)構(gòu)STEP016.1.5Spring的下載及目錄結(jié)構(gòu)使用瀏覽器訪問Spring的官方下載地址,訪問org→springframework→spring路徑,就可以看到Spring框架各個版本壓縮包的下載鏈接,這里選擇5.2.8.RELEASE版本,單擊鏈接下載該文件。在官網(wǎng)單擊下面這個鏈接下載該文件。spring-5.2.8.RELEASE-dist.zip下載Spring的相關(guān)jar包可按如下步驟進行。STEP026.1.5Spring的下載及目錄結(jié)構(gòu)下載完成后,將文件解壓得到一個名為spring-framework-5.2.8.RELEASE的文件夾。STEP01
docs文件夾:該文件夾下存放Spring的相關(guān)文檔,包括開發(fā)指南、API參考文檔。
libs文件夾:該文件夾下存放開發(fā)所需的jar包和源碼。整個Spring框架由21個模塊組成,libs目錄下Spring為每個模塊都提供了三個壓縮包,因此,libs文件夾下一共有63個jar包。這63個jar包分為三類。
schema文件夾:該文件夾下存放Spring各種配置文件的XMLSchema文檔。STEP03Spring目錄結(jié)構(gòu)下文件夾介紹6.1.5Spring的下載及目錄結(jié)構(gòu)STEP036.1.5Spring的下載及目錄結(jié)構(gòu)加載JAR包。
在使用Spring開發(fā)時,除了要使用自帶的jar包外,Spring的核心容器還需要依賴commons.logging的jar包。該jar包可以通過commons的官方地址下載。下載完成后,會得到一個名為commons-logging-1.2-bin.zit的壓縮包。將壓縮包解壓到自定義目錄后,即可找到commons.logging對應(yīng)jar包commons-logging-1.2.jar。Spring的入門程序6.26.2Spring的入門程序先定一個小目標(biāo)!
先定一個小目標(biāo)!掌握Spring的入門程序,能夠?qū)崿F(xiàn)Spring入門程序的編寫STEP016.2Spring的入門程序在IDEA中創(chuàng)建名稱為chapter06的Maven項目,然后在pom.xml文件中加載需使用到的Spring四個基礎(chǔ)包以及Spring依賴包。<!--此處只展示了一個--><dependency>
<groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId>
<version>5.2.8.RELEASE</version> </dependency>下面通過一個簡單的入門程序演示Spring框架的使用,要求在控制臺打印“張三,歡迎來到Spring”,實現(xiàn)步驟具體如下。STEP026.2Spring的入門程序創(chuàng)建名為HelloSpring的類,在HelloSpring類中定義userName屬性和show()方法。packagecom.itheima;publicclassHelloSpring{privateStringuserName;publicvoidsetUserName(StringuserName){this.userName=userName; }publicvoidshow()
{
System.out.println(userName+":歡迎來到Spring"); }}STEP036.2Spring的入門程序新建applicationContext.xml文件作為HelloSpring類的配置文件,并在該配置文件中創(chuàng)建id為helloSpring的Bean。<!--將指定類配置給Spring,讓Spring創(chuàng)建HelloSpring
對象的實例--><beanid="helloSpring"class="com.itheima.HelloSpring"><!--為userName屬性賦值--><propertyname="userName"value="張">
</property></bean>6.2Spring的入門程序XML文件的約束信息配置
XML文件包含了很多約束信息,如果自己動手去編寫,不但浪費時間,還容易出錯。XML的約束信息如下所示。其實,在Spring的幫助文檔中,就可以找到這些約束信息。
<beansxmlns="/schema/beans"
xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans.xsd">6.2Spring的入門程序Spring幫助文檔獲取約束信息步驟1步驟2步驟3打開Spring目錄結(jié)構(gòu)下的docs文件夾,在spring-framework-reference文件夾的Spring的參考文件目錄下找到index.html文件。
6.2Spring的入門程序Spring幫助文檔獲取約束信息步驟1步驟2步驟3使用瀏覽器打開index.html。6.2Spring的入門程序Spring幫助文檔獲取約束信息步驟1步驟2步驟3在步驟2中單擊“Core”鏈接進入CoreTechnologies頁面,單擊1.TheIoCcontainer→1.2.Containeroverview→1.2.1.ConfigurationMetadata目錄,可以查看配置文件的約束信息。STEP046.2Spring的入門程序創(chuàng)建測試類TestHelloSpring,在main()方法中初始化Spring容器并加載applicationContext.xml配置文件,通過Spring容器獲取HelloSpring類的helloSpring實例,調(diào)用HelloSpring類中的show()方法在控制臺輸出信息。publicclassTestHelloSpring{publicstaticvoidmain(String[]args){//
初始化spring容器,加載applicationContext.xml配置ApplicationContextapplicationContext=newClassPathXmlApplicationContext("applicationContext.xml");//
通過容器獲取配置中helloSpring的實例HelloSpringhelloSpring=(HelloSpring)applicationContext.getBean("helloSpring");helloSpring.show();//
調(diào)用方法 }}STEP056.2Spring的入門程序在IDEA中啟動測試類TestHelloSpring,控制臺會輸出結(jié)果。
控制反轉(zhuǎn)與依賴注入6.36.3.1控制反轉(zhuǎn)的概念先定一個小目標(biāo)!
先定一個小目標(biāo)!理解控制反轉(zhuǎn)的概念,能夠說出控制反轉(zhuǎn)的設(shè)計原則STEP01
控制反轉(zhuǎn)(InversionofControl,縮寫為IoC)是面向?qū)ο缶幊讨械囊粋€設(shè)計原則,用來降低程序代碼之間的耦合度。在傳統(tǒng)面向?qū)ο缶幊讨?,獲取對象的方式是用new關(guān)鍵字主動創(chuàng)建一個對象,也就是說應(yīng)用程序掌握著對象的控制權(quán)。傳統(tǒng)面向?qū)ο蟪绦蛟O(shè)計原則如圖。STEP03傳統(tǒng)面向?qū)ο蟪绦蛟O(shè)計原則6.3.1控制反轉(zhuǎn)的概念STEP01
IoC控制反轉(zhuǎn)機制指的是對象由Ioc容器統(tǒng)一管理,當(dāng)程序需要使用對象時,可以直接從IoC容器中獲取。這樣對象的控制權(quán)就從應(yīng)用程序轉(zhuǎn)移到了IoC容器。IoC設(shè)計原則如圖,它是借助于IoC容器實現(xiàn)具有依賴關(guān)系對象之間的解耦,各個對象類封裝之后,通過IoC容器來關(guān)聯(lián)這些對象類。STEP03IoC設(shè)計原則6.3.1控制反轉(zhuǎn)的概念6.3.2依賴注入的概念先定一個小目標(biāo)!
先定一個小目標(biāo)!掌握依賴注入的概念,能夠理解什么是依賴注入STEP01
依賴注入(DependencyInject,縮寫DI)就是由IoC容器在運行期間動態(tài)地將某種依賴資源注入對象之中。例如,將對象B注入(賦值)給對象A的成員變量。依賴注入的基本思想是:明確地定義組件接口,獨立開發(fā)各個組件,然后根據(jù)組件的依賴關(guān)系組裝運行。STEP03什么是依賴注入6.3.2依賴注入的概念STEP01
依賴注入(DI)和控制反轉(zhuǎn)(IoC)是從不同角度來描述了同一件事情。依賴注入是從應(yīng)用程序的角度描述,即應(yīng)用程序依賴IoC容器創(chuàng)建并注入它所需要的外部資源;而控制反轉(zhuǎn)是從IoC容器的角度描述,即IoC容器控制應(yīng)用程序,由IoC容器反向地向應(yīng)用程序注入應(yīng)用程序所需要的外部資源。這里所說的外部資源可以是外部實例對象,也可以是外部文件對象等。
STEP03依賴注入和控制反轉(zhuǎn)的比較6.3.2依賴注入的概念6.3.3依賴注入的類型先定一個小目標(biāo)!
先定一個小目標(biāo)!掌握依賴注入的類型,能夠使用構(gòu)造方法注入完成依賴注入STEP01
依賴注入的作用就是在使用Spring框架創(chuàng)建對象時,動態(tài)的將其所依賴的對象注入到Bean組件中。依賴注入通常有兩種實現(xiàn)方式,一種是構(gòu)造方法注入,另一種是屬性setter方法注入。這兩種實現(xiàn)方式具體介紹如下。STEP03依賴注入的實現(xiàn)方式6.3.3依賴注入的類型STEP01
構(gòu)造方法注入是指Spring容器調(diào)用構(gòu)造方法注入被依賴的實例,構(gòu)造方法可以是有參的或者是無參的。Spring在讀取配置信息后,會通過反射方式調(diào)用實例的構(gòu)造方法,如果是有參構(gòu)造方法,可以在構(gòu)造方法中傳入所需的參數(shù)值,最后創(chuàng)建類對象。STEP03構(gòu)造方法注入6.3.3依賴注入的類型STEP016.3.3依賴注入的類型編寫用戶類:新建User1類,在User1類中定義id、name和password三個屬性。publicclassUser1{privateintid;
privateStringname;
privateStringpassword;
publicUser1(intid,Stringname,Stringpassword){this.id=id; =name;this.password=password;}publicStringtoString(){return"id="+id+",name="+name+",password="+password;}}下面通過案例演示構(gòu)造方法注入的實現(xiàn),具體步驟如下。STEP026.3.3依賴注入的類型獲取Bean的配置信息:創(chuàng)建applicationContext-User.xml文件,在該文件中添加User1類的配置信息。<beanid="user1"class="com.itheima.User1">
<constructor-argname="id"value="1">
</constructor-arg><constructor-argname="name"value="張三">
</constructor-arg><constructor-argname="password" value="123"></constructor-arg></bean>6.3.3依賴注入的類型<constructor-arg>元素
一個<constructor-arg>元素表示構(gòu)造方法的一個參數(shù),且定義時不區(qū)分順序,只需要通過<constructor-arg>元素的name屬性指定參數(shù)即可。<constructor-arg>元素還提供了type屬性類指定參數(shù)的類型,避免字符串和基本數(shù)據(jù)類型的混淆。STEP036.3.3依賴注入的類型編寫測試類:創(chuàng)建測試類TestUser1,用于測試依賴注入的結(jié)果。publicclassTestUser1{publicstaticvoidmain(String[]args)throwsException{//加載applicationContext.xml配置ApplicationContextapplicationContext=newClassPathXmlApplicationContext("applicationContext-User.xml");//獲取配置中的User1實例User1user1=applicationContext.getBean("user1",User1.class);System.out.println(user1);
}}6.3.3依賴注入的類型先定一個小目標(biāo)!
先定一個小目標(biāo)!掌握依賴注入的類型,能夠使用屬性setter方法注入完成依賴注入STEP01
屬性setter方法注入是Spring最主流的注入方法,這種注入方法簡單、直觀,它是在被注入的類中聲明一個setter方法,通過setter方法的參數(shù)注入對應(yīng)的值。STEP03屬性setter方法注入6.3.3依賴注入的類型STEP016.3.3依賴注入的類型編寫用戶類:新建User2類,在User2類中定義id、name和password三個屬性。publicclassUser2{privateintid; privateStringname;
privateStringpassword;
//省略getter/setter方法
publicStringtoString(){return"id="+id+",name="+name+",password="+password;
}}下面通過案例演示屬性setter方法注入的實現(xiàn),具體步驟如下。STEP026.3.3依賴注入的類型獲取Bean的配置信息:創(chuàng)建applicationContext-User2.xml文件,并在該文件的bean元素中添加User2類的配置信息。<beanid="user2"class="com.itheima.User2"><propertyname="id"value="2"></property><propertyname="name"value="李四"></property><propertyname="password"value="456"> </property></bean>STEP036.3.3依賴注入的類型編寫測試類:創(chuàng)建測試類TestUser2,用于測試依賴注入的結(jié)果。publicclassTestUser2{publicstaticvoidmain(String[]args)throwsException{//加載applicationContext.xml配置ApplicationContextapplicationContext=newClassPathXmlApplicationContext("applicationContext-User2.xml");//獲取配置中的User2實例User2user2=applicationContext.getBean("user2",User2.class);System.out.println(user2);}}6.3.4依賴注入的應(yīng)用先定一個小目標(biāo)!
先定一個小目標(biāo)!掌握依賴注入的應(yīng)用,能夠在代碼中熟練運用依賴注入STEP016.3.4依賴注入的應(yīng)用(1)編寫DAO層:創(chuàng)建接口UserDao.java,在UserDao.java接口中添加方法login(),用于實現(xiàn)登錄功能。publicinterfaceUserDao{publicbooleanlogin(Stringname,Stringpassword);}下面以屬性setter方法注入為例,實現(xiàn)一個簡單的登錄驗證。具體實現(xiàn)步驟如下所示。STEP016.3.4依賴注入的應(yīng)用(2)編寫DAO層的實現(xiàn)類:創(chuàng)建UserDao接口的實現(xiàn)類UserDaoImpl,在UserDaoImpl類中實現(xiàn)login()方法。publicclassUserDaoImplimplementsUserDao{@Overridepublicbooleanlogin(Stringname,Stringpassword){if(name.equals(“張三”)&&password.equals(“123”)){
returntrue;}returnfalse;
}}STEP026.3.4依賴注入的應(yīng)用(1)編寫Service層:新建service包,在service
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電網(wǎng)側(cè)獨立儲能示范項目數(shù)字化方案(參考模板)
- 2025年可生物降解有機垃圾厭氧發(fā)酵裝置項目合作計劃書
- 2025年不孕不育醫(yī)院項目建議書
- 2025年血液灌流吸附器項目合作計劃書
- 我國基本法憲法知識競賽題庫及答案277題
- 文化遺產(chǎn)保護的數(shù)字化策略
- 2025年重氮化合物項目發(fā)展計劃
- 保險行業(yè)數(shù)字化理賠服務(wù)在自然災(zāi)害應(yīng)對中的實戰(zhàn)分析報告
- 2025年教育信息化基礎(chǔ)設(shè)施建設(shè)中網(wǎng)絡(luò)安全問題研究報告
- 2025年遠(yuǎn)程醫(yī)療服務(wù)在分級診療中的遠(yuǎn)程醫(yī)療人才培養(yǎng)報告
- 直流屏原理-課件
- 加藥設(shè)備安裝 檢驗批施工質(zhì)量驗收表
- 崗位技能評定機考考場規(guī)則
- 盡職調(diào)查所用相關(guān)表格(全)
- 三基-學(xué)校兒童少年衛(wèi)生學(xué)(200題)練習(xí)
- 老年康養(yǎng)服務(wù)中心項目可行性研究報告寫作參考范文
- 生物質(zhì)中纖維素、半纖維素和木質(zhì)素含量的測定
- 枸杞采摘合同
- 渦流探傷儀設(shè)計方案
- 張家界船舶工業(yè)項目建議書【模板范本】
- 來料檢驗報告模板
評論
0/150
提交評論