您好,登錄后才能下訂單哦!
這篇文章主要講解了“Spring框架的原理是什么”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Spring框架的原理是什么”吧!
簡要介紹spring的原理,并結合一個簡單的實例,如何配置使用spring。
在用ssh(Struts+Spring+Hibernate)實現(xiàn)的mvc模式中Spring是作為連接Struts和Hibernate的控制層。 與Spring框架相關的概念有以下: 輕量級:輕量級是針對重量級容器(EJB)來說的,Spring的核心包不到1M大小,而使用Spring的核心包所需的資源也很小,所以可以在小型設備中使用。 非侵入性:所有的框架都是提供大量的功能公用戶去使用,從而簡化開發(fā)時間和成本,但由于大量的使用了框架的API,使應用程序和框架發(fā)生了大量的依賴性,無法從框架中獨立出來,更加無法使程序組件在其他程序中使用,這樣的框架叫做入侵式的框架,而Spring目標是一個非入侵式的服務框架。 容器:容器就是一個幫助你把原來自行編寫程序去管理對象關系的工作轉(zhuǎn)移給容器來做。Spring提供了容器功能,容器可以管理對象的生命周期、對象與對象之間的關系、你可以通過編寫XML來設置對象關系和初始值,這樣容器在啟動之后,所有的對象都直接可以使用,不用編寫任何編碼來產(chǎn)生對象。 IOC/DI:Spring最核心的概念就是IOC(反轉(zhuǎn)控制),而他的另一個名字就是DI(依賴注入);使用Spring,你不必在程序中維護對象的依賴關系,只要在xml中設定即可,Spring容器會自己根據(jù)相關的配置去產(chǎn)生他們之間的關系,所有的關系都是都是在容器運行的時候注入的,而他們本身是沒有關系的。打個比方:比如張三和李四,之前是沒有任何關系的兩個對象,但當他倆進入班級這個容器中后,班級這個容器就將他倆賦予了同學的關系。這樣的做法就是用容器去賦予對象之間的關系,而不是對象本身之間來創(chuàng)建關系。這樣做的好處顯然實現(xiàn)了松偶合。 AOP(Aspect Oriented Programming面向切面/方面編程):Spring最被人重視的另一個方面就是對AOP的支持,AOP是Spring支持的一個子容器。在一個服務流程中插入與業(yè)務邏輯無關的系統(tǒng)服務邏輯(如:Logging登錄、Security安全等),而把這些獨立出來設計成一個對象,這樣的對象稱為Aspect。打個比方:做一次環(huán)球旅行,在旅行途中要經(jīng)過若干國家的海關關口辦理出入境手續(xù),這樣的一個一個的關口就是整個旅行流程中的一個一個的Aspect。 demo:(僅僅解釋了什么是依賴注入DI或者叫反轉(zhuǎn)控制IOC)
1、首先看一個原來的操作 //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類中修改代碼,這樣是一種緊耦合,改動一個類就牽扯到另外一個類。 松耦合的情況是User.java和Test.java這兩個類都不需要改動,就能實現(xiàn)輸出不同username屬性的效果,這就需要加入Spring的IOC/DI機制。
方法如下: 2、MyEclipse->Add Spring Capabilities...->僅加入核心包即可,這樣就生成了applicationContext.xml配置文件
3、修改applicationContext.xml:在xml文件的編輯頁中 右鍵->Spring->New Bean,在彈出窗口中進行如下圖的設置。
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()返回的是一個Object對象,需要進行相應的類對象的轉(zhuǎn)換。在代碼中沒有出現(xiàn)用new來實例化對象的語句,實現(xiàn)了Test類跟User類的松耦合。對象的實例化都在xml配置文件中實現(xiàn)了。
感謝各位的閱讀,以上就是“Spring框架的原理是什么”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對Spring框架的原理是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。