Spring一些基本概念
Spring一些基本概念
輕量級(jí)
?
組件小,庫(kù)小
Spring
在某種意義上是
EJB
的替代品,她是一種輕量級(jí)的容器。用過(guò)
EJB
的人都知道
EJB
很復(fù)雜,為了一個(gè)簡(jiǎn)單的功能你不得不編寫(xiě)多個(gè)
Java
文件和部署文件,他是一種重量級(jí)的容器。
非入侵式
重量級(jí)容器是一種入侵式的,也就是說(shuō)你要用
EJB
提供的功能就必須在你的代碼中體現(xiàn)
出來(lái)你使用的是
EJB
,比如繼承一個(gè)接口,聲明一個(gè)成員變量。這樣就把你的代碼綁定在
EJB
技術(shù)上了
相對(duì)而言“輕量級(jí)”就是非入侵式的,用
Spring
開(kāi)發(fā)的系統(tǒng)中的類(lèi)不需
要依賴(lài)
Spring
中的類(lèi),不需要容器支持(當(dāng)然
Spring
本身是一個(gè)容器),而且
Spring
的大小和運(yùn)行開(kāi)支都很微量
容器
為容器提供一個(gè)運(yùn)行環(huán)境,
IOC/DI
IoC
的全稱(chēng)是
Inversion of Control
,中文翻譯反向控制或者逆向控制
反轉(zhuǎn)控制,另一個(gè)名字依賴(lài)注入,
控制權(quán)的轉(zhuǎn)移即是所謂的反轉(zhuǎn)。
依賴(lài)注入
為調(diào)用者對(duì)象設(shè)置被調(diào)用者對(duì)象
接口注入
構(gòu)造注入
設(shè)置注入 (set/get)
AOP
AOP
全稱(chēng)是
Aspect-Oriented Programming
,中文翻譯是面向方面的編程或者面向切面的編程。
你應(yīng)該熟悉面向過(guò)程的編程,面向?qū)ο蟮木幊蹋敲嫦蚯忻娴木幊棠阋苍S是第一次聽(tīng)說(shuō)
POJO
我所看到過(guò)的
POJO
全稱(chēng)有兩個(gè),
Plain Ordinary Java Object
,
Plain Old Java
Object
,兩個(gè)差不多,意思都是普通的
Java
類(lèi),所以也不用去管誰(shuí)對(duì)誰(shuí)錯(cuò)。
POJO
可以看做是簡(jiǎn)單的
JavaBean
(具有一系列
Getter
,
Setter
方法的類(lèi))。嚴(yán)格區(qū)分
這里面的概念沒(méi)有太大意義,了解一下就行。
應(yīng)用
Spring
中的切面
Spring
生來(lái)支持
AOP
,首先來(lái)看幾個(gè)概念:
1、??
切面(
Aspect
):
切面是系統(tǒng)中抽象出來(lái)的的某一個(gè)功能模塊,上文已經(jīng)有過(guò)介紹,這里不再多說(shuō)。
2
、 通知(
Advice
)
:
通知是切面的具體實(shí)現(xiàn)。也就是說(shuō)你的切面要完成什么功能,具體怎么做就是在通知里面完成的。這個(gè)名稱(chēng)似乎有點(diǎn)讓人費(fèi)解,等后面看了
代碼就明白了。
3
切入點(diǎn)(
Pointcut
):
切入點(diǎn)定義了通知應(yīng)該應(yīng)用到系統(tǒng)的哪些地方。
Spring
只能控制到方法(有的
AOP
框架可以控制到屬性),也就是說(shuō)你能在方法調(diào)用之前或者之后選擇切入,執(zhí)行額外的操作。
2、??
目標(biāo)對(duì)象(
Target
):
目標(biāo)對(duì)象是被通知的對(duì)象。它可以是任何類(lèi),包括你自己
編寫(xiě)的或者第三方類(lèi)。有了
AOP
以后,目標(biāo)對(duì)象就只需要關(guān)注自己的核心業(yè)務(wù),其他的功能,比如日志,就由
AOP
框架支持完成。
3、???
代理(
Proxy
)
:
簡(jiǎn)單的講,代理就是將通知??? 應(yīng)用到目標(biāo)對(duì)象后產(chǎn)生的對(duì)象。
Spring
在運(yùn)行時(shí)會(huì)給每個(gè)目標(biāo)對(duì)象生成一個(gè)代理對(duì)象,以后所有對(duì)目標(biāo)對(duì)象的操作都
會(huì)通過(guò)代理對(duì)象來(lái)完成。只有這樣通知才可能切入目標(biāo)對(duì)象。對(duì)系統(tǒng)的其他部
分來(lái)說(shuō),這個(gè)過(guò)程是透明的,也就是看起來(lái)跟沒(méi)用代理一樣。
“連接點(diǎn)(
Jointpoint
)??
posted on 2009-03-29 11:47 luofeng225 閱讀(205) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): Spring