




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Spring概述Spring的核心容器Spring的入門程序DI與IoC第6章
初識(shí)Spring2024/1/29學(xué)習(xí)目標(biāo)/Target2了解Spring的基本概念和優(yōu)點(diǎn)
理解Spring中的DI與IoC的相關(guān)概念掌握ApplicationContext的使用方法掌握屬性setter方法注入的實(shí)現(xiàn)方法章節(jié)概述/Summary3Spring致力于解決JavaEE應(yīng)用中的各種問題,對(duì)于一個(gè)Java開發(fā)者來說,Spring框架的熟練使用是必備的技能之一。Spring具有良好的設(shè)計(jì)和分層結(jié)構(gòu),它克服了傳統(tǒng)重量型框架臃腫、低效的劣勢(shì),大大簡(jiǎn)化了項(xiàng)目開發(fā)中的技術(shù)復(fù)雜性。本章將對(duì)Spring框架的基礎(chǔ)知識(shí)進(jìn)行詳細(xì)地講解。
目錄/CONTENTSSpring概述DI與IoCSpring的入門程序Spring的核心容器41432Spring概述01第6章初識(shí)Spring什么是Spring?什么是Spring6Spring是分層的JavaSE/EEfull-stack輕量級(jí)開源框架,以IoC(InverseofControl控制反轉(zhuǎn))和AOP(AspectOrientedProgramming面向切面編程)為內(nèi)核,使用基本的JavaBean來完成以前只可能由EJB完成的工作,取代了EJB的臃腫、低效的開發(fā)模式。什么是Spring7
在實(shí)際開發(fā)中,通常服務(wù)器端在采用三層體系架構(gòu),分別為表示層(Web)、業(yè)務(wù)邏輯層(Service)、持久層(Dao),Spring對(duì)每一層都提供了技術(shù)支持。表示層業(yè)務(wù)邏輯層持久層在表示層提供了與Struts等框架的整合在業(yè)務(wù)邏輯層可以管理事務(wù)、記錄日志等在持久層可以整合MyBatis、Hibernate、JdbcTemplate等技術(shù)Spring的綠草叢8Spring輕量級(jí)框架,JavaEE的春天,當(dāng)前主流框架目標(biāo)使現(xiàn)有技術(shù)更加易用,推進(jìn)編碼最佳實(shí)踐內(nèi)容IoC容器AOP實(shí)現(xiàn)數(shù)據(jù)訪問支持簡(jiǎn)化JDBC/ORM框架聲明式事務(wù)Web集成Spring體系結(jié)構(gòu)9Spring的體系結(jié)構(gòu)10Spring框架采用的是分層架構(gòu),它一系列的功能要素被分成20個(gè)模塊。
BeansCoreContextSpELCoreContainerTestJDBCORMOXMJMSDataAccess/IntegrationTransactionsAOPAspectsInstrumentationMessagingWebSocketServletWebPortletWebSpring的體系結(jié)構(gòu)111.CoreContainer(核心容器)BeansCoreContextSpELCoreContainer
提供了BeanFactory,Spring將管理對(duì)象稱為Bean。
提供了Spring框架的基本組成部分,包括IoC和DI功能。建立在Core和Beans模塊的基礎(chǔ)之上,它是訪問定義和配置的任何對(duì)象的媒介。
Spring3.0后新增的模塊,是運(yùn)行時(shí)查詢和操作對(duì)象圖的強(qiáng)大的表達(dá)式語(yǔ)言。Spring的體系結(jié)構(gòu)12JDBCORMOXMJMSDataAccess/IntegrationTransactions提供了一個(gè)JDBC的抽象層,大幅度的減少了在開發(fā)過程中對(duì)數(shù)據(jù)庫(kù)操作的編碼。
提供了一個(gè)支持對(duì)象/XML映射的抽象層實(shí)現(xiàn),如JAXB、Castor、XMLBeans、JiBX和XStream。對(duì)流行的對(duì)象關(guān)系映射API,包括JPA、JDO和Hibernate提供了集成層支持。
支持對(duì)實(shí)現(xiàn)特殊接口以及所有POJO類的編程和聲明式的事務(wù)管理。指Java消息傳遞服務(wù),包含使用和產(chǎn)生信息的特性,自4.1版本后支持與Spring-message模塊的集成。2.DataAccess/Integration(數(shù)據(jù)訪問/集成)3.WebSpring的體系結(jié)構(gòu)13WebSocketServletWebPortletWebSpring4.0以后新增的模塊,它提供了WebSocket和SockJS的實(shí)現(xiàn),以及對(duì)STOMP的支持。提供了基本的Web開發(fā)集成特性,如:多文件上傳、使用Servlet監(jiān)聽器來初始化IoC容器以及Web應(yīng)用上下文。也稱Spring-webmvc模塊,包含Spring模型—視圖—控制器(MVC)和RESTWebServices實(shí)現(xiàn)的Web程序提供了在portlet環(huán)境中使用MVC實(shí)現(xiàn),類似Servlet模塊的功能。Spring的體系結(jié)構(gòu)144.其他模塊AOPAspectsInstrumentationMessagingTest
提供了面向切面編程實(shí)現(xiàn),允許定義方法攔截器和切入點(diǎn),將代碼按照功能進(jìn)行分離,以降低耦合性。提供了類工具的支持和類加載器的實(shí)現(xiàn),可以在特定的應(yīng)用服務(wù)器中使用。提供了與AspectJ的集成功能,AspectJ是一個(gè)功能強(qiáng)大且成熟的面向切面編程(AOP)框架。
提供了對(duì)單元測(cè)試和集成測(cè)試的支持。Spring4.0以后新增的模塊,它提供了對(duì)消息傳遞體系結(jié)構(gòu)和協(xié)議的支持。Spring設(shè)計(jì)理念&核心技術(shù)15Spring設(shè)計(jì)理念Spring是面向Bean的編程Spring兩大核心技術(shù)控制反轉(zhuǎn)(IoC:InversionofControl)/依賴注入(DI:DependencyInjection)面向切面編程(AOP:AspectOrientedProgramming)目的:解耦合。實(shí)現(xiàn)每個(gè)組件時(shí)只關(guān)注組件內(nèi)部的事情要點(diǎn):明確定義組件間的接口控制反轉(zhuǎn)/依賴注入16將組件對(duì)象的控制權(quán)從代碼本身轉(zhuǎn)移到外部容器組件化的思想:分離關(guān)注點(diǎn),使用接口,不再關(guān)注實(shí)現(xiàn)依賴的注入:將組件的構(gòu)建和使用分開組件的使用組件的生產(chǎn)接口的定義運(yùn)行時(shí)注入演示:使用簡(jiǎn)單工廠Spring開發(fā)所需的jar包分為兩個(gè)部分:Spring框架包和第三方依賴包。下載地址:https://spring.io/projects/spring-framework/spring-projects/spring-framework/tree/5.3.xSpring框架包docs文件夾中包含API文檔和開發(fā)規(guī)范libs文件夾中包含JAR包和源碼Schema文件夾中包含開發(fā)所需要的schema文件Spring的下載及目錄結(jié)構(gòu)17
下載后的解壓目錄如下:STEP01
docs文件夾:該文件夾下存放Spring的相關(guān)文檔,包括開發(fā)指南、API參考文檔。
libs文件夾:該文件夾下存放開發(fā)所需的jar包和源碼。整個(gè)Spring框架由21個(gè)模塊組成,libs目錄下Spring為每個(gè)模塊都提供了三個(gè)壓縮包,因此,libs文件夾下一共有63個(gè)jar包。這63個(gè)jar包分為三類。
schema文件夾:該文件夾下存放Spring各種配置文件的XMLSchema文檔。STEP03Spring目錄結(jié)構(gòu)下文件夾介紹Spring的下載及目錄結(jié)構(gòu)18打開libs目錄可以看到60個(gè)JAR文件,具體如下:以.jar結(jié)尾的是class文件JAR包以-javadoc.jar結(jié)尾的是API文檔壓縮包以-sources.jar結(jié)尾的是源文件壓縮包Spring的下載及目錄結(jié)構(gòu)19在libs目錄中有四個(gè)Spring的基礎(chǔ)包,分別對(duì)應(yīng)Spring核心容器的四個(gè)模塊。spring-expression-5.3.26.jar
定義了Spring的表達(dá)式語(yǔ)言。spring-core-5.3.26.jar
包含Spring框架的核心工具類,Spring其它組件都要用到這個(gè)包里的類。spring-beans-5.3.26.jar
所有應(yīng)用都要用到的JAR包,它包含訪問配置文件、創(chuàng)建和管理Bean以及進(jìn)行控制反轉(zhuǎn)或者依賴注入操作相關(guān)的所有類。spring-context-5.3.26.jar
提供了在基礎(chǔ)IoC功能上的擴(kuò)展服務(wù),還提供了許多企業(yè)級(jí)服務(wù)的支持Spring的下載及目錄結(jié)構(gòu)20Spring的下載及目錄結(jié)構(gòu)21第三方依賴包在使用Spring開發(fā)時(shí),除了要使用自帶的JAR包外,Spring的核心容器還需要依賴commons.logging的JAR包。下載地址:/proper/commons-logging/download_logging.cgiSpring框架的優(yōu)點(diǎn)22Spring具有簡(jiǎn)單、可測(cè)試和松耦合等特點(diǎn)。Spring不僅可以用于服務(wù)器端開發(fā),也可以應(yīng)用于任何Java應(yīng)用的開發(fā)中。非侵入式設(shè)計(jì)支持AOP方便解耦、簡(jiǎn)化開發(fā)12
3支持聲明式事務(wù)處理4方便程序測(cè)試5方便集成各種優(yōu)秀框架6降低JavaEEAPI的使用難度7Spring框架的7大優(yōu)點(diǎn)Spring的核心容器02第6章初識(shí)SpringSpring容器會(huì)負(fù)責(zé)控制程序之間的關(guān)系,而不是由程序代碼直接控制。Spring為我們提供了兩種核心容器,分別為BeanFactory和ApplicationContext,本節(jié)將對(duì)這兩種核心容器進(jìn)行簡(jiǎn)單介紹。概述Spring的核心容器24BeanFactorybeanFactory=newXmlBeanFactory(newFileSystemResource("F:/applicationContext.xml"));
創(chuàng)建BeanFactory實(shí)例時(shí),需要提供Spring所管理容器的詳細(xì)配置信息,這些信息通常采用XML文件形式來管理,其加載配置信息的語(yǔ)法如下:小提示:這種加載方式在實(shí)際開發(fā)中并不多用,讀者作為了解即可。XML配置文件的位置BeanFactory25ApplicationContext是BeanFactory的子接口,是另一種常用的Spring核心容器。它由org.springframework.context.ApplicationContext接口定義,不僅包含了BeanFactory的所有功能,還添加了對(duì)國(guó)際化、資源訪問、事件傳播等方面的支持。創(chuàng)建ApplicationContext接口實(shí)例,通常采用兩種方法,具體如下:ApplicationContextapplicationContext=newClassPathXmlApplicationContext(StringconfigLocation);
ClassPathXmlApplicationContext會(huì)從類路徑classPath中尋找指定的XML配置文件,找到并裝載完成ApplicationContext的實(shí)例化工作。通過ClassPathXmlApplicationContext創(chuàng)建
ApplicationContext26通過FileSystemXmlApplicationContext創(chuàng)建
ApplicationContextapplicationContext=newFileSystemXmlApplicationContext(StringconfigLocation);
FileSystemXmlApplicationContext會(huì)從指定的文件系統(tǒng)路徑(絕對(duì)路徑)中尋找指定的XML配置文件,找到并裝載完成ApplicationContext的實(shí)例化工作。在Java項(xiàng)目中,會(huì)通過ClassPathXmlApplicationContext類來實(shí)例化ApplicationContext容器。而在Web項(xiàng)目中,ApplicationContext容器的實(shí)例化工作會(huì)交由Web服務(wù)器來完成。Web服務(wù)器實(shí)例化ApplicationContext容器時(shí),通常會(huì)使用ContextLoaderListener來實(shí)現(xiàn),此種方式只需要在web.xml中添加如下代碼:<context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/applicationContext.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>ApplicationContext27
創(chuàng)建Spring容器后,就可以獲取Spring容器中的Bean。Spring獲取Bean的實(shí)例通常采用以下兩種方法:ObjectgetBean(Stringname);根據(jù)容器中Bean的id或name來獲取指定的Bean,獲取之后需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換。<T>TgetBean(Class<T>requiredType);根據(jù)類的類型來獲取Bean的實(shí)例。由于此方法為泛型方法,因此在獲取Bean之后不需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換。ApplicationContext28Spring的入門程序03第6章初識(shí)Spring創(chuàng)建工程:在IntelliJIDEA中,創(chuàng)建一個(gè)Maven項(xiàng)目,然后在pom.xml文件中加載需使用到的Spring的4個(gè)基礎(chǔ)包,即spring-core-5.3.26.jar、spring-beans-5.3.26.jar、spring-context-5.3.26.jar和spring-expression-5.3.26.jar。除此之外,還需要將Spring依賴包c(diǎn)ommons-logging-1.2.RELEASE.jar也加載到項(xiàng)目中。Spring的入門程序30STEP01<!--Spring的基礎(chǔ)包Spring-core--><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>5.3.26</version></dependency><!--Spring的基礎(chǔ)包Spring-beans--><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>5.3.26</version></dependency><!--Spring的基礎(chǔ)包Spring-context--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.26</version></dependency><!--Spring的基礎(chǔ)包Spring-expressinon--><dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>5.3.26</version></dependency><!--Spring的依賴包c(diǎn)ommons-logging--><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency>創(chuàng)建HelloSpring.java在src/main/java目錄下,創(chuàng)建一個(gè)cn.springdemo包,并在包中創(chuàng)建HelloSpring.java,然后在類中定義一個(gè)print()方法publicclassHelloSpring{//定義who屬性,該屬性的值將通過Spring框架進(jìn)行設(shè)置
privateStringwho=null;//定義打印方法,輸出一句完整的問候publicvoidprint(){System.out.println("Hello,"+this.getWho()+"!");}publicStringgetWho(){returnwho;}publicvoidsetWho(Stringwho){this.who=who;}}Spring的入門程序31STEP02#rootLogger是所有日志的根日志,修改該日志屬性將對(duì)所有日志起作用#下面的屬性配置中,所有日志的輸出級(jí)別是info,輸出源是conlog4j.rootLogger=info,con#定義輸出源的輸出位置是控制臺(tái)log4j.appender.con=org.apache.log4j.ConsoleAppender#定義輸出日志布局采用的類log4j.appender.con.layout=org.apache.log4j.PatternLayout#定義日志輸出布局log4j.appender.con.layout.ConversionPattern=%d{MM-ddHH:mm:ss}[%p]%c%n-%m%nSpring的入門程序32STEP03創(chuàng)建配置文件perties在src/main/resources目錄下,為該項(xiàng)目添加perties文件,用來控制日志輸出。Spring的入門程序33STEP04創(chuàng)建配置文件application-Context.xml在src/main/resources目錄下,編寫Spring配置文件。在項(xiàng)目的classpath根路徑下創(chuàng)建application-Context.xml文件(為便于管理框架的配置文件,可在項(xiàng)目中創(chuàng)建專門的SourceFolder,如resources目錄,并將Spring框架配置文件創(chuàng)建在其根路徑下)。<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd"><!--通過Bean聲明需要Spring創(chuàng)建的實(shí)例。該實(shí)例的類型通過class屬性指定,并通過id屬性為該實(shí)例指定一個(gè)名稱,以便在程序中使用-->
<beanid="helloSpring"class="cn.springdemo.HelloSpring"><!--property用來為實(shí)例的屬性賦值,此處實(shí)際是調(diào)用setWho()方法實(shí)現(xiàn)賦值操作-->
<propertyname="who"><!--此處將字符串“Spring”賦值給who屬性-->
<value>Spring</value></property></bean></beans>XML文件的約束信息配置
XML文件包含了很多約束信息,如果自己動(dòng)手去編寫,不但浪費(fèi)時(shí)間,還容易出錯(cuò)。XML的約束信息如下所示。其實(shí),在Spring的幫助文檔中,就可以找到這些約束信息。
<beansxmlns="/schema/beans"
xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans.xsd">Spring的入門程序34Spring幫助文檔獲取約束信息步驟1步驟2步驟3打開Spring目錄結(jié)構(gòu)下的docs文件夾,在spring-framework-reference文件夾的Spring的參考文件目錄下找到index.html文件。
Spring的入門程序35Spring幫助文檔獲取約束信息步驟1步驟2步驟3使用瀏覽器打開index.html。Spring的入門程序36Spring幫助文檔獲取約束信息步驟1步驟2步驟3在步驟2中單擊“Core”鏈接進(jìn)入CoreTechnologies頁(yè)面,單擊1.TheIoCcontainer→1.2.Containeroverview→1.2.1.ConfigurationMetadata目錄,可以查看配置文件的約束信息。Spring的入門程序37@Testpublicvoidtest1(){HelloSpringhelloSpring=newHelloSpring();helloSpring.setWho("Spring");helloSpring.print();}Spring的入門程序38STEP05創(chuàng)建測(cè)試類在cn.test包下創(chuàng)建測(cè)試類HelloTest.java@Testpublicvoidtest2(){//通過ClassPathXmlApplicationContext實(shí)例化Spring的上下文
ApplicationContextcontext=newClassPathXmlApplicationContext("applicationContext.xml");//通過ApplicationContext的getBean()方法,根據(jù)id來獲取Bean的實(shí)例
HelloSpringhelloSpring=(HelloSpring)context.getBean("helloSpring");//執(zhí)行print()方法
helloSpring.print();}DI與IoC04第6章初識(shí)Spring
DI的全稱是DependencyInjection,中文稱之為依賴注入。它與控制反轉(zhuǎn)(IoC)的含義相同,只不過這兩個(gè)稱呼是從兩個(gè)角度描述的同一個(gè)概念。
在使用Spring框架之后,對(duì)象的實(shí)例不再由調(diào)用者來創(chuàng)建,而是由Spring容器來創(chuàng)建,Spring容器會(huì)負(fù)責(zé)控制程序之間的關(guān)系,而不是由調(diào)用者的程序代碼直接控制。這樣,控制權(quán)由應(yīng)用代碼轉(zhuǎn)移到了Spring容器,控制權(quán)發(fā)生了反轉(zhuǎn),這就是控制反轉(zhuǎn)。從Spring容器的角度來看,Spring容器負(fù)責(zé)將被依賴對(duì)象賦值給調(diào)用者的成員變量,這相當(dāng)于為調(diào)用者注入了它依賴的實(shí)例,這就是Spring的依賴注入。IoCDI依賴注入的概念40STEP01
依賴注入(DependencyInject,縮寫DI)就是由IoC容器在運(yùn)行期間動(dòng)態(tài)地將某種依賴資源注入對(duì)象之中。例如,將對(duì)象B注入(賦值)給對(duì)象A的成員變量。依賴注入的基本思想是:明確地定義組件接口,獨(dú)立開發(fā)各個(gè)組件,然后根據(jù)組件的依賴關(guān)系組裝運(yùn)行。STEP03什么是依賴注入依賴注入的概念41STEP01
依賴注入(DI)和控制反轉(zhuǎn)(IoC)是從不同角度來描述了同一件事情。依賴注入是從應(yīng)用程序的角度描述,即應(yīng)用程序依賴IoC容器創(chuàng)建并注入它所需要的外部資源;而控制反轉(zhuǎn)是從IoC容器的角度描述,即IoC容器控制應(yīng)用程序,由IoC容器反向地向應(yīng)用程序注入應(yīng)用程序所需要的外部資源。這里所說的外部資源可以是外部實(shí)例對(duì)象,也可以是外部文件對(duì)象等。
STEP03依賴注入和控制反轉(zhuǎn)的比較依賴注入的概念42STEP01
依賴注入的作用就是在使用Spring框架創(chuàng)建對(duì)象時(shí),動(dòng)態(tài)的將其所依賴的對(duì)象注入到Bean組件中。依賴注入通常有兩種實(shí)現(xiàn)方式,一種是構(gòu)造方法注入,另一種是屬性setter方法注入。這兩種實(shí)現(xiàn)方式具體介紹如下。STEP03依賴注入的實(shí)現(xiàn)方式依賴注入的類型43STEP01
構(gòu)造方法注入是指Spring容器調(diào)用構(gòu)造方法注入被依賴的實(shí)例,構(gòu)造方法可以是有參的或者是無(wú)參的。Spring在讀取配置信息后,會(huì)通過反射方式調(diào)用實(shí)例的構(gòu)造方法,如果是有參構(gòu)造方法,可以在構(gòu)造方法中傳入所需的參數(shù)值,最后創(chuàng)建類對(duì)象。STEP03a.構(gòu)造方法注入依賴注入的類型44STEP01
屬性setter方法注入是Spring最主流的注入方法,這種注入方法簡(jiǎn)單、直觀,它是在被注入的類中聲明一個(gè)setter方法,通過setter方法的參數(shù)注入對(duì)應(yīng)的值。STEP03b.setter屬性注入依賴注入的類型45依賴注入——構(gòu)造方法注入46創(chuàng)建工程在IntelliJIDEA中,創(chuàng)建一個(gè)Maven項(xiàng)目,然后在pom.xml文件中加載需使用到的Spring的4個(gè)基礎(chǔ)包,即spring-core-5.3.26.jar、spring-beans-5.3.26.jar、spring-context-5.3.26.jar和spring-expression-5.3.26.jar。除此之外,還需要將Spring依賴包c(diǎn)ommons-logging-1.2.RELEASE.jar也加載到項(xiàng)目中。STEP01依賴注入——構(gòu)造方法注入47創(chuàng)建HelloSpring.java在src/main/java目錄下,創(chuàng)建一個(gè)cn.springdemo包,并在包中創(chuàng)建HelloSpring.java,為其添加無(wú)參構(gòu)造方法和有參構(gòu)造方法STEP02publicclassHelloSpring{//定義who屬性,該屬性的值將通過Spring框架進(jìn)行設(shè)置
privateStringwho=null;//定義打印方法,輸出一句完整的問候
publicvoidprint(){System.out.println("Hello,"+who+"!");}publicHelloSpring(){}publicHelloSpring(Stringwho){super();this.who=who;}}依賴注入——構(gòu)造方法注入48創(chuàng)建配置文件application-Context.xml在src/main/resources目錄下,編寫Spring框架的配置文件,在其中修改id為helloSpring的,以及Bean為HelloSpring類的實(shí)例,并通過構(gòu)造方法為who屬性注入屬性值。
STEP03<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd"><beanid="helloSpring"class="cn.springdemo.HelloSpring"><!--通過定義的單參構(gòu)造為helloSpring的who屬性賦值-->
<constructor-argindex="0"value="Spring"/></bean></beans><constructor-arg>元素
一個(gè)<constructor-arg>元素表示構(gòu)造方法的一個(gè)參數(shù),且定義時(shí)不區(qū)分順序,只需要通過<constructor-arg>元素的name屬性指定參數(shù)即可。<constructor-arg>元素還提供了type屬性類指定參數(shù)的類型,避免字符串和基本數(shù)據(jù)類型的混淆。依賴注入的類型49依賴注入——構(gòu)造方法注入50創(chuàng)建測(cè)試類在cn.test包下,創(chuàng)建測(cè)試類HelloTestSTEP04@Testpublicvoidtest(){//通過ClassPathXmlApplicationContext實(shí)例化Spring的上下文
ApplicationContextcontext=newClassPathXmlApplicationContext("applicationContext.xml");//通過ApplicationContext的getBean()方法,根據(jù)id來獲取Bean的實(shí)例
HelloSpringhelloSpring=(HelloSpring)context.getBean("helloSpring");//執(zhí)行print()方法
helloSpring.print();}共性問題集中講解51常見問題及解決辦法代碼規(guī)范問題調(diào)試技巧共性問題集中講解STEP01
控制反轉(zhuǎn)(InversionofControl,縮寫為IoC)是面向?qū)ο缶幊讨械囊粋€(gè)設(shè)計(jì)原則,用來降低程序代碼之間的耦合度。在傳統(tǒng)面向?qū)ο缶幊讨?,獲取對(duì)象的方式是用new關(guān)鍵字主動(dòng)創(chuàng)建一個(gè)對(duì)象,也就是說應(yīng)用程序掌握著對(duì)象的控制權(quán)。傳統(tǒng)面向?qū)ο蟪绦蛟O(shè)計(jì)原則如圖。STEP03傳統(tǒng)面向?qū)ο蟪绦蛟O(shè)計(jì)原則控制反轉(zhuǎn)的概念52STEP01
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年債務(wù)管理面試試題及答案
- 2025年php考試題庫(kù)及答案
- 工業(yè)機(jī)器人理論練習(xí)試卷附答案
- 2025年英語(yǔ)淄博中考試題及答案
- 2025年生物填空試題庫(kù)及答案初中
- 2025年大學(xué)記者模擬面試題及答案
- 2025年中路法師能力測(cè)試題及答案
- 2025年道德模范評(píng)選面試題及答案
- 2025年礦山非煤試題庫(kù)及答案
- 2025年人教版九年級(jí)試題及答案
- 蒙迪歐維修手冊(cè)
- 香味的分類(撲卻分類法)
- 鹽城市殘疾人康復(fù)機(jī)構(gòu)認(rèn)定暫行辦法
- 鐵路建設(shè)項(xiàng)目質(zhì)量安全紅線管理(課件01)
- C語(yǔ)言上機(jī)考試題目
- 大學(xué)生心理健康教育-大學(xué)生心理健康導(dǎo)論
- 《玩偶之家》說課課件
- 土建主要檢測(cè)設(shè)備及試驗(yàn)設(shè)備、儀器配備表
- 房地產(chǎn)公司各崗位職責(zé)及組織結(jié)構(gòu)圖
- 蘇少版四年級(jí)下冊(cè)《綜合實(shí)踐活動(dòng)》全一冊(cè)全部教案(定稿)
- 七夕節(jié)傳統(tǒng)文化習(xí)俗主題教育PPT
評(píng)論
0/150
提交評(píng)論