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


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2009年3月>
          22232425262728
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          導(dǎo)航

          統(tǒng)計(jì)

          公告

          我曾經(jīng)聽(tīng)到這么一個(gè)故事: 一個(gè)年輕的程序員問(wèn)一個(gè)老程序員(一個(gè)比較牛逼的公司的CTO) 年輕程序員: 你為什么這么牛X., 就好像沒(méi)有你不會(huì)的。老程序員: 積累的。年輕程序員: 怎么才能積累到您的程度呢。我每天都在積累。但是似乎都沒(méi)有感覺(jué)到進(jìn)步。老程序員: 我從20歲開(kāi)始做到了一件事情,直到今天,而且盡可能地保證不間斷。年輕程序員: 到底是什么? 老程序員: 我每天保證自己有2個(gè)小時(shí)在學(xué)習(xí)新的東西。

          常用鏈接

          留言簿(3)

          隨筆分類(lèi)

          隨筆檔案

          文章分類(lèi)

          相冊(cè)

          收藏夾

          Java Website

          java技術(shù)博客

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 射洪县| 香格里拉县| 开远市| 汝州市| 龙山县| 镇沅| 江永县| 宁河县| 明光市| 安溪县| 嘉义市| 杭锦旗| 九江市| 固镇县| 武义县| 历史| 稻城县| 勃利县| 长阳| 醴陵市| 云霄县| 丰原市| 开化县| 富民县| 河北省| 龙口市| 永川市| 丰原市| 昔阳县| 孝昌县| 永登县| 天祝| 阿坝| 长泰县| 凤山县| 自贡市| 湟中县| 南投市| 宣威市| 灵川县| 竹溪县|