Spring框架的原理是什么

這篇文章主要講解了“Spring框架的原理是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Spring框架的原理是什么”吧!

我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、江海ssl等。為超過千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的江海網(wǎng)站制作公司

簡要介紹spring的原理,并結(jié)合一個(gè)簡單的實(shí)例,如何配置使用spring。

在用ssh(Struts+Spring+Hibernate)實(shí)現(xiàn)的mvc模式中Spring是作為連接Struts和Hibernate的控制層。 與Spring框架相關(guān)的概念有以下: 輕量級:輕量級是針對重量級容器(EJB)來說的,Spring的核心包不到1M大小,而使用Spring的核心包所需的資源也很小,所以可以在小型設(shè)備中使用。 非侵入性:所有的框架都是提供大量的功能公用戶去使用,從而簡化開發(fā)時(shí)間和成本,但由于大量的使用了框架的API,使應(yīng)用程序和框架發(fā)生了大量的依賴性,無法從框架中獨(dú)立出來,更加無法使程序組件在其他程序中使用,這樣的框架叫做入侵式的框架,而Spring目標(biāo)是一個(gè)非入侵式的服務(wù)框架。 容器:容器就是一個(gè)幫助你把原來自行編寫程序去管理對象關(guān)系的工作轉(zhuǎn)移給容器來做。Spring提供了容器功能,容器可以管理對象的生命周期、對象與對象之間的關(guān)系、你可以通過編寫XML來設(shè)置對象關(guān)系和初始值,這樣容器在啟動之后,所有的對象都直接可以使用,不用編寫任何編碼來產(chǎn)生對象。 IOC/DI:Spring最核心的概念就是IOC(反轉(zhuǎn)控制),而他的另一個(gè)名字就是DI(依賴注入);使用Spring,你不必在程序中維護(hù)對象的依賴關(guān)系,只要在xml中設(shè)定即可,Spring容器會自己根據(jù)相關(guān)的配置去產(chǎn)生他們之間的關(guān)系,所有的關(guān)系都是都是在容器運(yùn)行的時(shí)候注入的,而他們本身是沒有關(guān)系的。打個(gè)比方:比如張三和李四,之前是沒有任何關(guān)系的兩個(gè)對象,但當(dāng)他倆進(jìn)入班級這個(gè)容器中后,班級這個(gè)容器就將他倆賦予了同學(xué)的關(guān)系。這樣的做法就是用容器去賦予對象之間的關(guān)系,而不是對象本身之間來創(chuàng)建關(guān)系。這樣做的好處顯然實(shí)現(xiàn)了松偶合。 AOP(Aspect Oriented Programming面向切面/方面編程):Spring最被人重視的另一個(gè)方面就是對AOP的支持,AOP是Spring支持的一個(gè)子容器。在一個(gè)服務(wù)流程中插入與業(yè)務(wù)邏輯無關(guān)的系統(tǒng)服務(wù)邏輯(如:Logging登錄、Security安全等),而把這些獨(dú)立出來設(shè)計(jì)成一個(gè)對象,這樣的對象稱為Aspect。打個(gè)比方:做一次環(huán)球旅行,在旅行途中要經(jīng)過若干國家的海關(guān)關(guān)口辦理出入境手續(xù),這樣的一個(gè)一個(gè)的關(guān)口就是整個(gè)旅行流程中的一個(gè)一個(gè)的Aspect。 demo:(僅僅解釋了什么是依賴注入DI或者叫反轉(zhuǎn)控制IOC)

1、首先看一個(gè)原來的操作 //User.java package org.myspring; public class User { private String username; private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } } //Test.java package org.myspring; public class Test { public static void main(String[] args) { User user=new User(); user.setUsername("zhangsan"); System.out.println(user.getUsername()); } } 以上是原始的做法,產(chǎn)生的問題是:如果想要把zhangsan改為lisi則需要在Test類中修改代碼,這樣是一種緊耦合,改動一個(gè)類就牽扯到另外一個(gè)類。 松耦合的情況是User.java和Test.java這兩個(gè)類都不需要改動,就能實(shí)現(xiàn)輸出不同username屬性的效果,這就需要加入Spring的IOC/DI機(jī)制。

方法如下: 2、MyEclipse->Add Spring Capabilities...->僅加入核心包即可,這樣就生成了applicationContext.xml配置文件

3、修改applicationContext.xml:在xml文件的編輯頁中 右鍵->Spring->New Bean,在彈出窗口中進(jìn)行如下圖的設(shè)置。 zhangsan25

4、新的測試類 //Test.java package org.myspring; import org.springframework.context.ApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; public class Test { public static void main(String[] args) { ApplicationContext c FileSystemXmlApplicationContext("src/org/myspring/applicationContext.xml"); User user=(User)context.getBean("user"); System.out.println("name:"+user.getUsername()+"; age:"+user.getAge()); } } 注意:在上面的代碼中context.getBean()返回的是一個(gè)Object對象,需要進(jìn)行相應(yīng)的類對象的轉(zhuǎn)換。在代碼中沒有出現(xiàn)用new來實(shí)例化對象的語句,實(shí)現(xiàn)了Test類跟User類的松耦合。對象的實(shí)例化都在xml配置文件中實(shí)現(xiàn)了。

感謝各位的閱讀,以上就是“Spring框架的原理是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Spring框架的原理是什么這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

文章題目:Spring框架的原理是什么
當(dāng)前地址:http://muchs.cn/article24/ihsdce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、企業(yè)網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、關(guān)鍵詞優(yōu)化、云服務(wù)器網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)