Spring一些基本概念
?
輕量級
?
組件小,庫小
Spring
在某種意義上是
EJB
的替代品,她是一種輕量級的容器。用過
EJB
的人都知道
EJB
很復雜,為了一個簡單的功能你不得不編寫多個
Java
文件和部署文件,他是一種重量級的容器。
?
非入侵式
?
重量級容器是一種入侵式的,也就是說你要用
EJB
提供的功能就必須在你的代碼中體現
出來你使用的是
EJB
,比如繼承一個接口,聲明一個成員變量。這樣就把你的代碼綁定在
EJB
技術上了
?
相對而言“輕量級”就是非入侵式的,用
Spring
開發的系統中的類不需
要依賴
Spring
中的類,不需要容器支持(當然
Spring
本身是一個容器),而且
Spring
的大小和運行開支都很微量
?
?
容器
為容器提供一個運行環境,
?
IOC/DI
IoC
的全稱是
Inversion of Control
,中文翻譯反向控制或者逆向控制
反轉控制,另一個名字依賴注入,
控制權的轉移即是所謂的反轉。
?
依賴注入
為調用者對象設置被調用者對象
接口注入
構造注入
設置注入
(set/get)
?
AOP
AOP
全稱是
Aspect-Oriented Programming
,中文翻譯是面向方面的編程或者面向切面的編程。
你應該熟悉面向過程的編程,面向對象的編程,但是面向切面的編程你也許是第一次聽說
?
?
POJO
我所看到過的
POJO
全稱有兩個,
Plain Ordinary Java Object
,
Plain Old Java
Object
,兩個差不多,意思都是普通的
Java
類,所以也不用去管誰對誰錯。
POJO
可以看做是簡單的
JavaBean
(具有一系列
Getter
,
Setter
方法的類)。嚴格區分
這里面的概念沒有太大意義,了解一下就行。
?
應用
Spring
中的切面
Spring
生來支持
AOP
,首先來看幾個概念:
?
1、??
切面(
Aspect
):
切面是系統中抽象出來的的某一個功能模塊,上文已經有過介紹,這里不再多說。
2
、 通知(
Advice
)
:
通知是切面的具體實現。也就是說你的切面要完成什么功能,具體怎么做就是在通知里面完成的。這個名稱似乎有點讓人費解,等后面看了
代碼就明白了。
?
3
切入點(
Pointcut
):
切入點定義了通知應該應用到系統的哪些地方。
Spring
只能控制到方法(有的
AOP
框架可以控制到屬性),也就是說你能在方法調用之前或者之后選擇切入,執行額外的操作。
?
2、??
目標對象(
Target
):
目標對象是被通知的對象。它可以是任何類,包括你自己
編寫的或者第三方類。有了
AOP
以后,目標對象就只需要關注自己的核心業務,其他的功能,比如日志,就由
AOP
框架支持完成。
?
3、???
代理(
Proxy
)
:
簡單的講,代理就是將通知??? 應用到目標對象后產生的對象。
Spring
在運行時會給每個目標對象生成一個代理對象,以后所有對目標對象的操作都
會通過代理對象來完成。只有這樣通知才可能切入目標對象。對系統的其他部
分來說,這個過程是透明的,也就是看起來跟沒用代理一樣。
?
?
“連接點(
Jointpoint
)??
?
?
?
?