1.什麼是Spring?
Spring是一種從實際開發中抽取出來的框架,因此它完成了大量開發中的通用步驟,留給開發者的僅僅是與特定應用相關的部分,從而大大的提高了企業應用的開發效率。Spring是一個獨立的框架,並不需要依賴任何Web伺服器或容器,可以獨立的在專案中使用。Spring貫穿表現層,業務層,持久層,是企業應用開發的“一站式”選擇。
2.Spring的優點
- 低侵入式設計,對程式碼的汙染極低。什麼是侵入式,比如Struts,需要使用這個框架就需要在程式碼中繼承它的ActionSupport類等等,將來需要拋棄這個框架的時候程式碼都需要重新進行修改,這就是侵入式。而Spring的低侵入式設計,使得程式碼在使用新框架或者新技術的時候,不需要對程式碼進行任何修改,也不會改變原來的程式碼結構。
- 使用IOC容器(Inversion of Control ),中文翻譯是控制反轉。什麼是控制反轉,我在網上找了一個很好的例子:
我每次吃飯的時候都要買一雙一次性筷子(每一次使用都要new一次),在這樣的關係下,是“我”(即呼叫者)每次都要“主動”去買一次性筷子(另一個類),我對筷子說你老老實實的過來我的手上,是我控制了筷子,那好,在這種控制正轉的關係下,放在現實生活當中,肯定是不現實的,而且人是懶惰的,他總會去創造出更加方便自己生活的想法,更確切的做法是,買一雙普通的筷子(非一次性),把他放在一個容器當中(在Spring中叫做IOC容器),你需要使用的時候就對容器說:IOC我想要用筷子(向容器發出請求),接著筷子就會“注入”到你的手上,而在這個過程當中,你不再是控制方,反而演變成一名請求者(雖然本身還是呼叫者),依賴於容器給予你資源,控制權坐落到了容器身上,於是這就是人們俗稱的控制反轉
控制反轉也可以稱為依賴注入,就是比如原本需要我們自己手動new物件,而使用控制反轉之後,控制權轉移給了容器,自然我們就不再需要自己new物件了,而是先把物件注入到容器裡面,下次我們要用的時候直接拿來用就好了。
IOC容器其實就是一個超級大工廠,所有的物件(包括資料來源,Hibernate SessionFactory等基礎性資源)都會被當成IOC容器管理的物件——Spring把容器中的一切物件都統稱為bean(這個bean和Java bean是完全不同的),這些bean全都放在xml檔案中進行管理。其實一個bean就相當於一個物件,不一定是Java bean物件,而是所有物件。使用IOC的好處就是,我們不用再手動的new物件,不用關心物件的初始化、使用、銷燬過程,這些都由IOC容器來管理,更好地實現了程式的解耦。
- AOP(Aspect Oriented Programming)即面向切面程式設計,Spring中的AOP,就是將原來的一些與核心功能完全無關的,比如異常處理,log日誌處理,安全處理,事務處理等等這些散佈在程式各處且大量重複的程式碼,集中起來封裝到一個可重用模組,這個可重用模組就是“切面”,這樣做的好處就是隻需要寫一個通用的模組,哪裡需要它就指定Spring將這個模組載入到需要的地方,而不是在每個方法中都寫一段差不多的程式碼,這樣大大的減少了系統的重複程式碼,提高了程式碼的複用性。AOP應用的簡單例項講解:連結描述
- 獨立性,Spring是一個獨立的框架,可以與其他框架高度無縫整合。
- 高度開放性,Spring不強制應用完全依賴於Spring,開發者可以自由選擇Spring框架的部分或者全部。
- 事務支援,Spring並不直接管理事務,而是提供了多種事務管理器,Spring事務管理器的介面是org.springframework.transaction.PlatformTransactionManager,通過這個介面,Spring為各個平臺如JDBC、Hibernate等都提供了對應的事務管理器,但是具體的實現就是各個平臺自己的事情了。
3.Spring框架如何搭建
1)點選連結:連結描述 ,此連結下面存放的是Spring各版本的壓縮包的下載連結,點選一個你需要的版本進去下載RELEASE-dist.zip 檔案,解壓縮得到一個RELEASE資料夾。
2)找到RELEASE資料夾下面的libs目錄,將所需的jar包複製到你自己的專案的WebRootWEB-INFlib目錄下面,搭建一個Spring環境最少需要以下幾個jar包,我以Spring 4.1.6為例:
- spring-core-4.1.6.RELEASE.jar (Spring核心jar包)
- spring-beans-4.1.6.RELEASE.jar (管理bean物件的核心jar包)
- spring-context-4.1.6.RELEASE.jar (上下文支援jar包)
- spring-context-support-4.1.6.RELEASE.jar (上下文支援jar包)
- spring-aop-4.1.6.RELEASE.jar (AOP支援jar包)
- spring-aspects-4.1.6.RELEASE.jar (面向切面程式設計用的jar包)
- spring-expression-4.1.6.RELEASE.jar (SpringEL表示式相關jar包)
- spring-jdbc-4.1.6.RELEASE.jar (資料訪問層框架需要的支援jar包.用於處理JDBC連結)
- spring-orm-4.1.6.RELEASE.jar (ORM對映框架支援)
- spring-tx-4.1.6.RELEASE.jar (事務管理)
- spring-web-4.1.6.RELEASE.jar (網路支援所需的jar包)
- spring-instrument-4.1.6.RELEASE.jar (外掛開發的jar包)
- spring-instrument-tomcat-4.1.6.RELEASE.jar(外掛開發的jar包)
3)除了以上jar包之外,Spring的核心容器還依賴common-logging的jar包,因此還需要的到連結描述
下載commons-logging-1.2-bin.zip,將解壓縮得到的commons-logging-1.2.jar也新增到你專案的lib目錄下面。
經過上面三個步驟,我們就可以在專案中使用Spring框架了。
4.總結
Spring是一個很實用的框架,它簡化了程式設計師的開發步驟,提高了開發效率,也很好做到了的程式碼解耦,並強化了程式設計師面向介面程式設計的習慣。
最後需要說明一點的就是Spring 4.0對IOC容器增強了一些註解,現在使用Spring框架幾乎不需要自己配置bean例項,只需要在xml檔案中配置下面兩行程式碼,然後在類中配置相應的@註解,Spring就會自動搜尋“com.students.xl”路徑下的Java類,並將這些Java類註冊成bean例項。Spring註解使用:連結描述
<context:annotation-config/>
<context:component-scan base-package="com.students.xl" />