<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    少年阿賓

    那些青春的歲月

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks

    AOP有三種植入切面的方法:其一是編譯期織入,這要求使用特殊的Java編譯器,AspectJ是其中的代表者;其二是類裝載期織入,而這要求使用特殊的類裝載器,AspectJ和AspectWerkz是其中的代表者;其三為動態(tài)代理織入,在運(yùn)行期為目標(biāo)類添加增強(qiáng)生成子類的方式,Spring AOP采用動態(tài)代理織入切面。

    Spring AOP使用了兩種代理機(jī)制,一種是基于JDK的動態(tài)代理,另一種是基于CGLib的動態(tài)代理,之所以需要兩種代理機(jī)制,很大程度上是因為JDK本身只提供基于接口的代理,不支持類的代理。

    Spring的三種注入方式:
    接口注入(不推薦)
    getter,setter方式注入(比較常用)
    構(gòu)造器注入(死的應(yīng)用)

    什么是AOP?
    面向切面編程(AOP)完善spring的依賴注入(DI),面向切面編程在spring中主要表現(xiàn)為兩個方面
    1.面向切面編程提供聲明式事務(wù)管理
    2.spring支持用戶自定義的切面

    面向切面編程(aop)是對面向?qū)ο缶幊蹋╫op)的補(bǔ)充,
    面向?qū)ο缶幊虒⒊绦蚍纸獬筛鱾€層次的對象,面向切面編程將程序運(yùn)行過程分解成各個切面。
    AOP從程序運(yùn)行角度考慮程序的結(jié)構(gòu),提取業(yè)務(wù)處理過程的切面,oop是靜態(tài)的抽象,aop是動態(tài)的抽象,
    是對應(yīng)用執(zhí)行過程中的步驟進(jìn)行抽象,,從而獲得步驟之間的邏輯劃分。

    aop框架具有的兩個特征:
    1.各個步驟之間的良好隔離性
    2.源代碼無關(guān)性

    什么是DI機(jī)制?
    依賴注入(Dependecy Injection)和控制反轉(zhuǎn)(Inversion of Control)是同一個概念,具體的講:當(dāng)某個角色
    需要另外一個角色協(xié)助的時候,在傳統(tǒng)的程序設(shè)計過程中,通常由調(diào)用者來創(chuàng)建被調(diào)用者的實例。但在spring中
    創(chuàng)建被調(diào)用者的工作不再由調(diào)用者來完成,因此稱為控制反轉(zhuǎn)。創(chuàng)建被調(diào)用者的工作由spring來完成,然后注入調(diào)用者
    因此也稱為依賴注入。
    spring以動態(tài)靈活的方式來管理對象 , 注入的兩種方式,設(shè)置注入和構(gòu)造注入。
    設(shè)置注入的優(yōu)點(diǎn):直觀,自然
    構(gòu)造注入的優(yōu)點(diǎn):可以在構(gòu)造器中決定依賴關(guān)系的順序。

    spring 的優(yōu)點(diǎn)都有哪些?
    1.降低了組件之間的耦合性 ,實現(xiàn)了軟件各層之間的解耦
    2.可以使用容易提供的眾多服務(wù),如事務(wù)管理,消息服務(wù)等
    3.容器提供單例模式支持
    4.容器提供了AOP技術(shù),利用它很容易實現(xiàn)如權(quán)限攔截,運(yùn)行期監(jiān)控等功能
    5.容器提供了眾多的輔助類,能加快應(yīng)用的開發(fā)
    6.spring對于主流的應(yīng)用框架提供了集成支持,如hibernate,JPA,Struts等
    7.spring屬于低侵入式設(shè)計,代碼的污染極低
    8.獨(dú)立于各種應(yīng)用服務(wù)器
    9.spring的DI機(jī)制降低了業(yè)務(wù)對象替換的復(fù)雜性
    10.Spring的高度開放性,并不強(qiáng)制應(yīng)用完全依賴于Spring,開發(fā)者可以自由選擇spring的部分或全部


    一、spring工作原理:

    1.spring mvc請所有的請求都提交給DispatcherServlet,它會委托應(yīng)用系統(tǒng)的其他模塊負(fù)責(zé)負(fù)責(zé)對請求進(jìn)行真正的處理工作。
    2.DispatcherServlet查詢一個或多個HandlerMapping,找到處理請求的Controller.
    3.DispatcherServlet請請求提交到目標(biāo)Controller
    4.Controller進(jìn)行業(yè)務(wù)邏輯處理后,會返回一個ModelAndView
    5.Dispathcher查詢一個或多個ViewResolver視圖解析器,找到ModelAndView對象指定的視圖對象
    6.視圖對象負(fù)責(zé)渲染返回給客戶端。


    描述一下Spring中實現(xiàn)DI(Dependency Injection)的幾種方式

    方式一:接口注入,在實際中得到了普遍應(yīng)用,即使在IOC的概念尚未確立時,這樣的方法也已經(jīng)頻繁出現(xiàn)在我們的代碼中。
    方式二:Type2 IoC: Setter injection對象創(chuàng)建之后,將被依賴對象通過set方法設(shè)置進(jìn)去
    方式三:Type3 IoC: Constructor injection對象創(chuàng)建時,被依賴對象以構(gòu)造方法參數(shù)的方式注入

     簡單描述下IOC(inversion of control)的理解
    一個類需要用到某個接口的方法,我們需要將類A和接口B的實現(xiàn)關(guān)聯(lián)起來,最簡單的方法是類A中創(chuàng)建一個對于接口B的實現(xiàn)C的實例,但這種方法顯然兩者的依賴(Dependency)太大了。而IoC的方法是只在類A中定義好用于關(guān)聯(lián)接口B的實現(xiàn)的方法,將類A,接口B和接口B的實現(xiàn)C放入IoC的 容器(Container)中,通過一定的配置由容器(Container)來實現(xiàn)類A與接口B的實現(xiàn)C的關(guān)聯(lián)。

    spring提供的事務(wù)管理可以分為兩類:編程式的和聲明式的。編程式的,比較靈活,但是代碼量大,存在重復(fù)的代碼比較多;聲明式的比編程式的更靈活。
    編程式主要使用transactionTemplate。省略了部分的提交,回滾,一系列的事務(wù)對象定義,需注入事務(wù)管理對象.
    void add()
    {
    transactionTemplate.execute( new TransactionCallback(){
    pulic Object doInTransaction(TransactionStatus ts)
    { //do sth}
    }
    }
    聲明式:
    使用TransactionProxyFactoryBean:

    PROPAGATION_REQUIRED PROPAGATION_REQUIRED PROPAGATION_REQUIRED,readOnly
    圍繞Poxy的動態(tài)代理 能夠自動的提交和回滾事務(wù)
    org.springframework.transaction.interceptor.TransactionProxyFactoryBean
    PROPAGATION_REQUIRED–支持當(dāng)前事務(wù),如果當(dāng)前沒有事務(wù),就新建一個事務(wù)。這是最常見的選擇。
    PROPAGATION_SUPPORTS–支持當(dāng)前事務(wù),如果當(dāng)前沒有事務(wù),就以非事務(wù)方式執(zhí)行。
    PROPAGATION_MANDATORY–支持當(dāng)前事務(wù),如果當(dāng)前沒有事務(wù),就拋出異常。
    PROPAGATION_REQUIRES_NEW–新建事務(wù),如果當(dāng)前存在事務(wù),把當(dāng)前事務(wù)掛起。
    PROPAGATION_NOT_SUPPORTED–以非事務(wù)方式執(zhí)行操作,如果當(dāng)前存在事務(wù),就把當(dāng)前事務(wù)掛起。
    PROPAGATION_NEVER–以非事務(wù)方式執(zhí)行,如果當(dāng)前存在事務(wù),則拋出異常。
    PROPAGATION_NESTED–如果當(dāng)前存在事務(wù),則在嵌套事務(wù)內(nèi)執(zhí)行。如果當(dāng)前沒有事務(wù),則進(jìn)行與PROPAGATION_REQUIRED類似的操作。

    spring中的核心類有那些,各有什么作用?
    BeanFactory:產(chǎn)生一個新的實例,可以實現(xiàn)單例模式
    BeanWrapper:提供統(tǒng)一的get及set方法
    ApplicationContext:提供框架的實現(xiàn),包括BeanFactory的所有功能
    spring的ioc及di代表什么意思?
    控制權(quán)由代碼轉(zhuǎn)向容器,通過容器動態(tài)將某些對象加入。
    如何在spring中實現(xiàn)國際化?
    在applicationContext.xml加載一個bean
    message.properties是一個鍵名加鍵值的文件,

















































     

    posted on 2013-05-29 14:37 abin 閱讀(646) 評論(0)  編輯  收藏 所屬分類: spring
    主站蜘蛛池模板: 国内精品乱码卡1卡2卡3免费| 亚洲精品无码成人片久久| 亚洲AV日韩AV永久无码久久| 日韩在线观看免费完整版视频| 超pen个人视频国产免费观看| 亚洲伊人久久大香线蕉在观| 99久久久国产精品免费牛牛四川| 久久精品国产亚洲av四虎| 精品四虎免费观看国产高清午夜| 国产精品亚洲产品一区二区三区 | 亚洲精品国产精品国自产观看| MM1313亚洲精品无码久久| 免费人成视网站在线观看不卡| 美女黄频免费网站| 国产精品国产自线拍免费软件| 亚洲av日韩综合一区二区三区| 免费一区二区三区四区五区| 一级毛片免费毛片毛片| 伊人久久大香线蕉亚洲| 毛片无码免费无码播放| 亚洲中文无码av永久| 成人免费午夜视频| 看成年女人免费午夜视频| 亚洲一级特黄大片在线观看| 免费观看成人久久网免费观看| 亚洲欧洲国产综合| 久久精品免费一区二区喷潮| 国产成人精品日本亚洲语音| 亚洲人成色777777在线观看| 精品熟女少妇a∨免费久久| 亚洲卡一卡二卡乱码新区| 日本高清免费不卡视频| 久久久久久国产a免费观看不卡| 亚洲国产美女精品久久久久∴| 麻豆高清免费国产一区| 国产亚洲Av综合人人澡精品| 亚洲一区爱区精品无码| 麻豆最新国产剧情AV原创免费 | 中文字幕无码免费久久| 狠狠色香婷婷久久亚洲精品| 亚洲女人被黑人巨大进入|