- 相關(guān)推薦
Java的Spring框架知識
Spring是一個開源框架,于2003年興起的一個輕量級的Java 開發(fā)框架,下面我們來詳細了解一下Spring框架的基礎(chǔ)知識!
一. Spring框架的作用
輕量:Spring是輕量級的,基本的版本大小為2MB
控制反轉(zhuǎn):Spring通過控制反轉(zhuǎn)實現(xiàn)了松散耦合,對象們給出它們的依賴,而不是創(chuàng)建或查找依賴的對象們。
面向切面的編程AOP:Spring支持面向切面的編程,并且把應用業(yè)務邏輯和系統(tǒng)服務分開。
容器:Spring包含并管理應用中對象的生命周期和配置
MVC框架: Spring-MVC
事務管理:Spring提供一個持續(xù)的事務管理接口,可以擴展到上至本地事務下至全局事務JTA
異常處理:Spring提供方便的API把具體技術(shù)相關(guān)的異常
二. Spring的組成
Spring由7個模塊組成:
Spring Core: 核心容器提供 Spring 框架的基本功能。核心容器的主要組件是BeanFactory,它是工廠模式的實現(xiàn)。BeanFactory 使用控制反轉(zhuǎn) (IOC) 模式將應用程序的配置和依賴性規(guī)范與實際的應用程序代碼分開。
Spring 上下文:Spring 上下文是一個配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企業(yè)服務,例如 JNDI、EJB、電子郵件、國際化、校驗和調(diào)度功能。
Spring AOP:通過配置管理特性,Spring AOP 模塊直接將面向方面的編程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何對象支持 AOP。Spring AOP 模塊為基于 Spring 的應用程序中的對象提供了事務管理服務。通過使用 Spring AOP,不用依賴 EJB 組件,就可以將聲明性事務管理集成到應用程序中。
Spring DAO:JDBC DAO 抽象層提供了有意義的異常層次結(jié)構(gòu),可用該結(jié)構(gòu)來管理異常處理和不同數(shù)據(jù)庫供應商拋出的錯誤消息。異常層次結(jié)構(gòu)簡化了錯誤處理,并且極大地降低了需要編寫的異常代碼數(shù)量(例如打開和關(guān)閉連接)。Spring DAO 的面向 JDBC 的異常遵從通用的 DAO 異常層次結(jié)構(gòu)。
Spring ORM:Spring 框架插入了若干個 ORM 框架,從而提供了 ORM 的對象關(guān)系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有這些都遵從 Spring 的通用事務和 DAO 異常層次結(jié)構(gòu)。
Spring Web 模塊:Web 上下文模塊建立在應用程序上下文模塊之上,為基于 Web 的應用程序提供了上下文。所以,Spring 框架支持與 Jakarta Struts 的集成。Web 模塊還簡化了處理多部分請求以及將請求參數(shù)綁定到域?qū)ο蟮墓ぷ鳌?/p>
Spring MVC 框架:MVC 框架是一個全功能的構(gòu)建 Web 應用程序的 MVC 實現(xiàn)。通過策略接口,MVC 框架變成為高度可配置的,MVC 容納了大量視圖技術(shù),其中包括 JSP、Velocity、Tiles、iText 和 POI。
三. Spring容器
Sping的容器可以分為兩種類型
1. BeanFactory:(org.springframework.beans.factory.BeanFactory接口定義)是最簡答的容器,提供了基本的DI支持。最常用的BeanFactory實現(xiàn)就是XmlBeanFactory類,它根據(jù)XML文件中的定義加載beans,該容器從XML文件讀取配置元數(shù)據(jù)并用它去創(chuàng)建一個完全配置的系統(tǒng)或應用。
2. ApplicationContext應用上下文:(org.springframework.context.ApplicationContext)基于BeanFactory之上構(gòu)建,并提供面向應用的服務。
四. ApplicationContext通常的實現(xiàn)
ClassPathXmlApplicationContext:從類路徑下的XML配置文件中加載上下文定義,把應用上下文定義文件當做類資源。
FileSystemXmlApplicationContext:讀取文件系統(tǒng)下的XML配置文件并加載上下文定義。
XmlWebApplicationContext:讀取Web應用下的XML配置文件并裝載上下文定義。
1 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
五. IOC & DI
Inversion of Control, 一般分為兩種類型:依賴注入DI(Dependency Injection)和依賴查找(Dependency Lookup).依賴注入應用比較廣泛。
Spring IOC扶著創(chuàng)建對象,管理對象(DI),裝配對象,配置對象,并且管理這些對象的整個生命周期。
優(yōu)點:把應用的代碼量降到最低。容器測試,最小的代價和最小的侵入性使松散耦合得以實現(xiàn)。IOC容器支持加載服務時的餓漢式初始化和懶加載。
DI依賴注入是IOC的一個方面,是個通常的概念,它有多種解釋。這概念是說你不用床架對象,而只需要描述它如何被創(chuàng)建。你不在代碼里直接組裝你的組件和服務,但是要在配置文件里描述組件需要哪些服務,之后一個IOC容器輔助把他們組裝起來。
IOC的注入方式:1. 構(gòu)造器依賴注入;2. Setter方法注入。
六. 如何給spring容器提供配置元數(shù)據(jù)
XML配置文件
基于注解的配置
基于Java的配置@Configuration, @Bean
七. bean標簽中的屬性:
id
name
class
init-method:Bean實例化后會立刻調(diào)用的方法
destory-method:Bean從容器移除和銷毀前,會調(diào)用的方法
factory-method:運行我們調(diào)用一個指定的靜態(tài)方法,從而代替構(gòu)造方法來創(chuàng)建一個類的實例。
scope:Bean的作用域,包括singleton(默認),prototype(每次調(diào)用都創(chuàng)建一個實例), request,session, global-session(注意spring中的單例bean不是線程安全的)
autowired:自動裝配 byName, byType, constructor, autodetect(首先闡釋使用constructor自動裝配,如果沒有發(fā)現(xiàn)與構(gòu)造器相匹配的Bean時,Spring將嘗試使用byType自動裝配)
八. beans標簽中相關(guān)屬性
default-init-method
default-destory-method
default-autowire:默認為none,應用于Spring配置文件中的所有Bean,注意這里不是指Spring應用上下文,因為你可以定義多個配置文件。
【Java的Spring框架知識】相關(guān)文章:
講解Java的Spring框架中的AOP實現(xiàn)10-30
Java中的Spring入門實例09-15
關(guān)于java Spring整合Freemarker的詳細步驟06-23
java線程池框架解析09-11
java的三大主流框架10-29
什么是java線程池框架10-02
Java面試-關(guān)于Spring面試題及答案06-24
java中spring的幾個重要類和接口09-10
java線程池框架是什么09-03