Spring原理

          spring的最大作用ioc/di,將類與類的依賴關(guān)系寫在配置文件中,
          程序在運行時根據(jù)配置文件動態(tài)加載依賴的類,
          降低的類與類之間的藕合度。
          它的原理是在applicationContext.xml加入bean標簽,
          在bean標簽中通過class屬性說明具體類名,
          通過property標簽說明該類的屬性名,
          通過constructor-args說明構(gòu)造子的參數(shù)。
          其一切都是返射,當(dāng)通過applicationContext.getBean("id名稱")得到一個類實例時,
          就是以bean標簽的類名、屬性名、構(gòu)造子的參數(shù)為準,
          通過反射實例對象,喚起對象的set方法設(shè)置屬性值,
          通過構(gòu)造子的newInstance實例化得到對象。
          正因為spring一切都是反射,反射比直接調(diào)用的處理速度慢,
          所以這也是spring的一個問題。

          spring第二大作用就是aop,其機理來自于代理模式,
          代理模式有三個角色分別是通用接口、代理、真實對象代理、
          真實對象實現(xiàn)的是同一接口,將真實對象作為代理的一個屬性,
          向客戶端公開的是代理,當(dāng)客戶端調(diào)用代理的方法時,
          代理找到真實對象,調(diào)用真實對象方法,
          在調(diào)用之前之后提供相關(guān)的服務(wù),如事務(wù)、安全、日志。
          其名稱分別是代理、真實對象、裝備、關(guān)切點、連接點。


          主要是可擴展性。如果現(xiàn)在你的客戶覺得訪問效率太低,程序不用hibernate了,
          要使用jdbc,比如:UserDaoHibernateImpl(原來),現(xiàn)在修改為UserDaoJdbcImpl.
          這個時候你要怎么辦?直接去修改源代碼?你原來不用接口進行引用,肯定是new 了一個
          UserDaoHibernateImpl出來,如果多個地方都用到,你不但要去修改源代碼,還要修改很多地方,
          而是用spring的依賴注入呢,你只需要修改下配置,把bean的class屬性給修改下,換下配置什么的
          就可以了,降低后期維護成本

          因為web應(yīng)用大了,servletClass多了,所以用到struts來減輕我們的負擔(dān),使得模塊更清晰,和更利于復(fù)用和管理。
          因為web應(yīng)用大了,表、字段多了,寫sql語句會寫死人,且比較容易出錯,所以用到hibernate來獲得它給我們的面向?qū)ο蟛僮鲾?shù)據(jù)庫的服務(wù),省去了寫n多sql的煩心事,且使我們的程序更加面向?qū)ο?
          因為邏輯和組件模塊多了,因為層多了,于是我們考慮整一個spring,一來包裝hibernate,提供更簡便的服務(wù)接口及更易于管理的事務(wù)服務(wù),二來代理了我們的服務(wù)層和dao層,使得這兩層與實際的控制單元的關(guān)系變成ioc框架來管理,任何一方的修改都不會牽扯到雙方都要修改的問題。總之spring就是把雜亂的dao、service、action給串了起來,變成了一個個可在程序外控制的模塊,使其可以自由的組合在一起,即可獲得想要的服務(wù)也不用煩他們之間的關(guān)系。

          CopyRight@BUG

          posted on 2009-11-20 16:24 seanchang 閱讀(456) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


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

          導(dǎo)航

          統(tǒng)計

          公告

          我的blog: http://blog.seanchang.me

          RSS: http://feed.feedsky.com/SeanChang

          常用鏈接

          留言簿

          隨筆檔案

          我的blog地址

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 安庆市| 修文县| 南部县| 柞水县| 措美县| 兴安盟| 固安县| 汤原县| 页游| 民权县| 葫芦岛市| 宜丰县| 康定县| 河池市| 湟源县| 乌鲁木齐市| 读书| 平陆县| 满城县| 图木舒克市| 即墨市| 桦川县| 宁波市| 曲麻莱县| 澜沧| 宣武区| 白玉县| 云龙县| 石首市| 青田县| 福海县| 平罗县| 杭锦后旗| 浪卡子县| 松阳县| 靖远县| 宜丰县| 临城县| 故城县| 南溪县| 垫江县|