什么是spring
Spring 是個(gè)java企業(yè)級(jí)應(yīng)用的開源開發(fā)框架。Spring主要用來(lái)開發(fā)Java應(yīng)用偷线,但是有些擴(kuò)展是針對(duì)構(gòu)建J2EE平臺(tái)的web應(yīng)用。Spring 框架目標(biāo)是簡(jiǎn)化Java企業(yè)級(jí)應(yīng)用開發(fā),并通過(guò)POJO(Plain Ordinary Java Object,普通Java對(duì)象)為基礎(chǔ)的編程模型促進(jìn)良好的編程習(xí)慣盯桦。
使用Spring框架的好處是什么?
- 輕量:Spring 是輕量的渤刃。
- 控制反轉(zhuǎn):Spring通過(guò)控制反轉(zhuǎn)實(shí)現(xiàn)了松散耦合拥峦,對(duì)象們給出它們的依賴,而不是創(chuàng)建或查找依賴的對(duì)象們卖子。
- 面向切面的編程(AOP):Spring支持面向切面的編程略号,并且把應(yīng)用業(yè)務(wù)邏輯和系統(tǒng)服務(wù)分開。
容器:Spring 包含并管理應(yīng)用中對(duì)象的生命周期和配置洋闽。 - MVC框架:Spring的WEB框架是個(gè)精心設(shè)計(jì)的框架玄柠,是Web框架的一個(gè)很好的替代品。
- 事務(wù)管理:Spring 提供一個(gè)持續(xù)的事務(wù)管理接口喊递,可以擴(kuò)展到上至本地事務(wù)下至全局事務(wù)(JTA)随闪。
- 異常處理:Spring 提供方便的API把具體技術(shù)相關(guān)的異常(比如由JDBC阳似,Hibernate or JDO拋出的)轉(zhuǎn)化為一致的unchecked 異常骚勘。
Spring 特點(diǎn)
Spring由哪些模塊組成?
核心容器
核心容器由核心,Bean撮奏,上下文和表達(dá)式語(yǔ)言模塊組成俏讹,它們的細(xì)節(jié)如下:
-
Core模塊提供了框架的基本組成部分,包括 IoC 和依賴注入功能畜吊。Spring IOC 負(fù)責(zé)創(chuàng)建對(duì)象泽疆,管理對(duì)象(通過(guò)依賴注入(DI),裝配對(duì)象玲献,配置對(duì)象殉疼,并且管理這些對(duì)象的整個(gè)生命周期。IOC方式:
- 構(gòu)造器注入
- Setter方法注入
- 接口注入
Beans模塊提供 BeanFactory捌年,它是一個(gè)工廠模式的復(fù)雜實(shí)現(xiàn)瓢娜。最常用的BeanFactory 實(shí)現(xiàn)是XmlBeanFactory 類。
-
上下文模塊建立在由核心和 Bean 模塊提供的堅(jiān)實(shí)基礎(chǔ)上礼预,它是訪問(wèn)定義和配置的任何對(duì)象的媒介眠砾。ApplicationContext 接口是上下文模塊的重點(diǎn)。
- FileSystemXmlApplicationContext :此容器從一個(gè)XML文件中加載beans的定義托酸,XML Bean 配置文件的全路徑名必須提供給它的構(gòu)造函數(shù)褒颈。
ClassPathXmlApplicationContext:此容器也從一個(gè)XML文件中加載beans的定義柒巫,這里,你需要正確設(shè)置classpath因?yàn)檫@個(gè)容器將在classpath里找bean配置谷丸。
WebXmlApplicationContext:此容器加載一個(gè)XML文件堡掏,此文件定義了一個(gè)WEB應(yīng)用的所有bean。
- FileSystemXmlApplicationContext :此容器從一個(gè)XML文件中加載beans的定義托酸,XML Bean 配置文件的全路徑名必須提供給它的構(gòu)造函數(shù)褒颈。
表達(dá)式語(yǔ)言模塊在運(yùn)行時(shí)提供了查詢和操作一個(gè)對(duì)象圖的強(qiáng)大的表達(dá)式語(yǔ)言刨疼。
數(shù)據(jù)訪問(wèn)/集成
數(shù)據(jù)訪問(wèn)/集成層包括 JDBC布疼,ORM,OXM币狠,JMS 和事務(wù)處理模塊游两,它們的細(xì)節(jié)如下:
JDBC 模塊提供了刪除冗余的 JDBC 相關(guān)編碼的 JDBC 抽象層。
ORM 模塊為流行的對(duì)象關(guān)系映射 API漩绵,包括 JPA贱案,JDO,Hibernate 和 iBatis止吐,提供了集成層宝踪。
OXM 模塊提供了抽象層,它支持對(duì) JAXB碍扔,Castor瘩燥,XMLBeans,JiBX 和 XStream 的對(duì)象/XML 映射實(shí)現(xiàn)不同。
Java 消息服務(wù) JMS 模塊包含生產(chǎn)和消費(fèi)的信息的功能厉膀。
事務(wù)模塊為實(shí)現(xiàn)特殊接口的類及所有的 POJO 支持編程式和聲明式事務(wù)管理。
Web
Web 層由 Web二拐,Web-MVC服鹅,Web-Socket 和 Web-Portlet 組成,它們的細(xì)節(jié)如下:
Web 模塊提供了基本的面向 web 的集成功能百新,例如多個(gè)文件上傳的功能和使用 servlet 監(jiān)聽器和面向 web 應(yīng)用程序的上下文來(lái)初始化 IoC 容器企软。
Web-MVC 模塊包含 Spring 的模型-視圖-控制器(MVC),實(shí)現(xiàn)了 web 應(yīng)用程序饭望。
Web-Socket 模塊為 WebSocket-based 提供了支持仗哨,而且在 web 應(yīng)用程序中提供了客戶端和服務(wù)器端之間通信的兩種方式。
Web-Portlet 模塊提供了在 portlet 環(huán)境中實(shí)現(xiàn) MVC铅辞,并且反映了 Web-Servlet 模塊的功能厌漂。
其他
還有其他一些重要的模塊,像 AOP巷挥,Aspects桩卵,Instrumentation,Web 和測(cè)試模塊,它們的細(xì)節(jié)如下:
AOP 模塊提供了面向方面的編程實(shí)現(xiàn)雏节,允許你定義方法攔截器和切入點(diǎn)對(duì)代碼進(jìn)行干凈地解耦胜嗓,它實(shí)現(xiàn)了應(yīng)該分離的功能。
Aspects 模塊提供了與 AspectJ 的集成钩乍,這是一個(gè)功能強(qiáng)大且成熟的面向切面編程(AOP)框架辞州。
Instrumentation 模塊在一定的應(yīng)用服務(wù)器中提供了類 instrumentation 的支持和類加載器的實(shí)現(xiàn)。
Messaging 模塊為 STOMP 提供了支持作為在應(yīng)用程序中 WebSocket 子協(xié)議的使用寥粹。它也支持一個(gè)注解編程模型变过,它是為了選路和處理來(lái)自 WebSocket 客戶端的 STOMP 信息。
測(cè)試模塊支持對(duì)具有 JUnit 或 TestNG 框架的 Spring 組件的測(cè)試涝涤。
Spring常用模塊與Jar包
常用注解
bean注入與裝配的的方式有很多種媚狰,可以通過(guò)xml,getset方式阔拳,構(gòu)造函數(shù)或者注解等崭孤。簡(jiǎn)單易用的方式就是使用Spring的注解了,Spring提供了大量的注解方式糊肠,讓項(xiàng)目閱讀和開發(fā)起來(lái)更加方便辨宠。
第三方框架集成
Spring框架的開發(fā)不是為了替代現(xiàn)有的優(yōu)秀第三方框架,而是通過(guò)集成的方式把它們都連接起來(lái)货裹。下面總結(jié)了一些常集成的優(yōu)秀框架嗤形。