資料內(nèi)容:
1. Spring概述
1.1什么是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ā),并通過POJO為基礎(chǔ)的編程模型促進(jìn)良好的編
程習(xí)慣。
1.2 使用Spring框架的好處是什么?
輕量:Spring是輕量的,基本的版本大約2MB
控制反轉(zhuǎn):Spring通過控制反轉(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,HibernateorJDO拋出的)轉(zhuǎn)化為一
致的unchecked異常。
1.3 Spring的兩大核心概念
IOC(控制翻轉(zhuǎn))
控制翻轉(zhuǎn),也叫依賴注入,他就是不會(huì)直接創(chuàng)建對(duì)象,只是把對(duì)象聲明出來(lái),在代碼 中不直接與對(duì)象和服務(wù)
進(jìn)行連接,但是在配置文件中描述了哪一項(xiàng)組件需要哪一項(xiàng)服 務(wù),容器將他們組件起來(lái)。在一般的IOC場(chǎng)景
中容器創(chuàng)建了所有的對(duì)象,并設(shè)置了必 要的屬性將他們聯(lián)系在一起,等到需要使用的時(shí)候才把他們聲明出
來(lái),使用注解就跟 方便了,容器會(huì)自動(dòng)根據(jù)注解把對(duì)象組合起來(lái)
AOP(面對(duì)切面編程)
面對(duì)切面編程,這是一種編程模式,他允許程序員通過自定義的橫切點(diǎn)進(jìn)行模塊 化,將那些影響多個(gè)類的行
為封裝到課重用的模塊中。 例子:比如日志輸出,不使用AOP的話就需要把日志的輸出語(yǔ)句放在所有類中,
方法 中,但是有了AOP就可以把日志輸出語(yǔ)句封裝一個(gè)可重用模塊,在以聲明的方式將他 們放在類中,每次
使用類就自動(dòng)完成了日志輸出。
1.4 Spring由哪些模塊組成?
以下是Spring框架的基本模塊:
Coremodule Bean module Context moduleExpression Language module
JDBC module ORM module OXM module
Java Messaging Service(JMS) module
Transaction module Web module
Web-Servlet module Web-Struts module Web-Portlet module
1.5 Spring的優(yōu)缺點(diǎn)是什么?
優(yōu)點(diǎn):
方便解耦,簡(jiǎn)化開發(fā):Spring就是一個(gè)大工廠,可以將所有對(duì)象的創(chuàng)建和依賴關(guān)系的維護(hù),交給Spring
管理。
AOP編程的支持:Spring提供面向切面編程,可以方便的實(shí)現(xiàn)對(duì)程序進(jìn)行權(quán)限攔截、運(yùn)行監(jiān)控等功能。
聲明式事務(wù)的支持
只需要通過配置就可以完成對(duì)事務(wù)的管理,而無(wú)需手動(dòng)編程。
方便程序的測(cè)試:Spring對(duì)Junit4支持,可以通過注解方便的測(cè)試Spring程序。
方便集成各種優(yōu)秀框架:Spring不排斥各種優(yōu)秀的開源框架,其內(nèi)部提供了對(duì)各種優(yōu)秀框架的直接支持
(如:Struts、Hibernate、MyBatis等)。
降低JavaEE API的使用難度:Spring對(duì)JavaEE開發(fā)中非常難用的一些API(JDBC、JavaMail、遠(yuǎn)程調(diào)用
等),都提供了封裝,使這些API應(yīng)用難度大大降低。
缺點(diǎn):
Spring明明一個(gè)很輕量級(jí)的框架,卻給人感覺大而全
Spring依賴反射,反射影響性能
使用門檻升高,入門Spring需要較長(zhǎng)時(shí)間