菜鳥學習Spring——初識Spring,菜鳥spring初識
一、概念。
Spring是一個開源架構,Spring是於2003 年興起的一個輕量級的Java 開發架構,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中闡述的部分理念和原型衍生而來。它是為瞭解決公司專屬應用程式開發的複雜性而建立的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限於伺服器端的開發。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。
◆目的:解決公司專屬應用程式開發的複雜性
◆功能:使用基本的JavaBean代替EJB,並提供了更多的公司專屬應用程式功能
◆範圍:任何Java應用
簡單來說,Spring是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器架構。
◆輕量——從大小與開銷兩方面而言Spring都是輕量的。完整的Spring架構可以在一個大小隻有1MB多的JAR檔案裡發布。並且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應用中的對象不依賴於Spring的特定類。
◆控制反轉——Spring通過一種稱作控制反轉(IoC)的技術促進了松耦合。當應用了IoC,一個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己建立或者尋找依賴對象。你可以認為IoC與JNDI相反——不是對象從容器中尋找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。
◆面向切面——Spring提供了面向切面編程的豐富支援,允許通過分離應用的商務邏輯與系統級服務(例如審計(auditing)和事務(transaction)管理)進行內聚性的開發。應用對象只實現它們應該做的——完成商務邏輯——僅此而已。它們並不負責(甚至是意識)其它的系統級關注點,例如日誌或事務支援。
◆容器——Spring包含並管理應用對象的配置和生命週期,在這個意義上它是一種容器,你可以配置你的每個bean如何被建立——基於一個可配置原型(prototype),你的bean可以建立一個單獨的執行個體或者每次需要時都產生一個新的執行個體——以及它們是如何相互關聯的。然而,Spring不應該被混同於傳統的重量級的EJB容器,它們經常是龐大與笨重的,難以使用。
◆架構——Spring可以將簡單的組件配置、組合成為複雜的應用。在Spring中,應用對象被聲明式地組合,典型地是在一個XML檔案裡。Spring也提供了很多基礎功能(交易管理、持久化框架組成等等),將應用邏輯的開發留給了你。
◆MVC——Spring的作用是整合,但不僅僅限於整合,Spring 架構可以被看做是一個企業解決方案層級的架構。用戶端發送請求,伺服器控制器(由DispatcherServlet實現的)完成請求的轉寄,控制器調用一個用於映射的類HandlerMapping,該類用於將請求映射到對應的處理器來處理請求。HandlerMapping 將請求映射到對應的處理器Controller(相當於Action)在Spring 當中如果寫一些處理器組件,一般實現Controller 介面,在Controller 中就可以調用一些Service 或DAO 來進行資料操作 ModelAndView 用於存放從DAO 中取出的資料,還可以存放響應視圖的一些資料。 如果想將處理結果返回給使用者,那麼在Spring 架構中還提供一個視圖組件ViewResolver,該組件根據Controller 返回的標示,找到對應的視圖,將響應response 返回給使用者。
所有Spring的這些特徵使你能夠編寫更乾淨、更可管理、並且更易於測試的代碼。它們也為Spring中的各種模組提供了基礎支援。
二、Spring核心
Spring一共有7個模組組成如:
這幾個模組的功能包括:
Core包是架構的基本組成部分,它提供依賴注射及Bean容器的管理功能。它的BeanFactory消除了應用對Singleton和Factory的依賴。
AOP包提供了與AOP聯盟相容的AOP實現,允許定義方法、攔截器、切入點等。通過AOP,在應用程式邏輯上實現了關注點的橫切分離。
Context包構建於Bean包之上,它提供了一種架構式的Bean訪問方式,類似JNDI機制,Context包提供了Bean包之上的功能擴充。
DAO包提供了JDBC抽象,消除了冗長的JDBC編碼,並轉譯了資料庫廠商特有的錯誤碼。該包也提供了編程式和聲明式的交易管理。
ORM包為流行的關係/對象映射方案提供整合的借口。
WebMVC包提供了面向Web應用的MVC實現Spring的MVC和Ioc容器的整合提供了較大的靈活性
Web包提供了面向Web的綜合特性,如使用Servlet監聽器的Context初始化、檔案上傳等功能。此外它也用於同其他Web架構的整合。
三、綜述。
Spring為我們訪問底層的J2EEContainer Service更為簡單,有了Spring我們的開發效率將大大提高。
學習spring的過程中 要掌握spring的什要點?
首先是Spring最經典也是最常用的:IoC控制反轉(也可以說是DI依賴注入),因為spring中剩下很多內容都是以它為基礎的
第二是Spring中對資料持久化的支援,例如jdbcTemplate、JPA支援、JTA支援、Hibernate支援、iBatis支援等
其次是Spring中AOP的各項應用:例如事務控制、日誌切面等等。
最後是SpringMVC、Spring Security等等了
spring學習
spring只要分為兩塊,一個是依賴注入,一個是面向切面編程,但是實際工作中用的最多的是依賴注入。你要學的話,就學會搭spring的環境,知道依賴注入和面向切面是怎麼一回事,能寫個簡單demo出來就夠了,其他的地方泛泛的看一下,知道他能做什麼就夠了,然後具體的就在項目中碰到了再深入的去看某一塊。其實所有的web架構都可以這樣學,不用一本書從頭到尾這樣學,因為很多知識就是你當時學會了,長時間不用一樣會忘,並且這個看書學習的過程也很耗時間,一般效率很低。