免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
IOC/DI與AOP概念的理解

IOC,控制反轉(zhuǎn)的意思,DI是依賴注入


    所謂控制反轉(zhuǎn),即依賴關(guān)系的獲取方式(controll)反過來了。所謂依賴,從程序的角度看,就是比如A要調(diào)用B的方法,那么A就依賴于B,反正A要用到B,則A依賴于B。所謂反轉(zhuǎn)(inversion),你必須理解如果不反轉(zhuǎn),會怎么著,因為A必須要有B,才可以調(diào)用B,如果不反轉(zhuǎn),意思就是A主動獲取B的實例:Bb = newB(),這就是最簡單的獲取B實例的方法(當(dāng)然還有各種設(shè)計模式可以幫助你去獲得B的實例,比如工廠、Locator等等),然后你就可以調(diào)用b對象了。
     所以,不反轉(zhuǎn),意味著A要主動獲取B,才能使用B;到了這里,你就應(yīng)該明白了反轉(zhuǎn)的意思了。倒置就是A要調(diào)用B的話,A并不需要主動獲取B,而是由其它人自動將B送上門來。

     形象的舉例就是:

     通常情況下,假如你有一天在家里口渴了,要喝水,那么你可以到你小區(qū)的小賣部去,告訴他們,你需要一瓶水,然后小賣部給你一瓶水!

     這本來沒有太大問題,關(guān)鍵是如果小賣部很遠(yuǎn),那么你必須知道:從你家如何到小賣部;小賣部里是否有你需要的水;你還要考慮是否開著車去;等等等等,也許有太多的問題要考慮了。也就是說,為了一瓶水,你還可能需要依賴于車等等這些交通工具或別的工具,問題是不是變得復(fù)雜了?那么如何解決這個問題呢?

     解決這個問題的方法很簡單:小賣部提供送貨上門服務(wù),凡是小賣部的會員,你只要告知小賣部你需要什么,小賣部將主動把貨物給你送上門來!這樣一來,你只需要做兩件事情,你就可以活得更加輕松自在:
     第一:向小賣部注冊為會員
     第二:告訴小賣部你需要什么

是不是和Spring的做法很類似呢?Spring就是小賣部,你就是A對象,水就是B對象
     第一:在Spring中聲明一個類:A
     第二:告訴Spring,A需要B

假設(shè)A是UserAction類,而B是UserService類



    

     在Spring這個商店(工廠)中,有很多對象/服務(wù):userService,documentService,orgService,也有很多會員:userAction等等,聲明userAction需要userService即可,Spring將通過你給它提供的通道主動把userService送上門來,因此UserAction的代碼示例類似如下所示:

package org.leadfar.web;
public class UserAction{
    private UserService userService;
    public String login(){
         userService.valifyUser(xxx);
    }
    public void setUserService(UserService userService){
         this.userService = userService;
    }
}

在這段代碼里面,你無需自己創(chuàng)建UserService對象(Spring作為背后無形的手,把UserService對象通過你定義的setUserService()方法把它主動送給了你,這就叫依賴注入?。?/p>

Spring依賴注入的實現(xiàn)技術(shù)是:動態(tài)代理

 

AOP

 

     再說說AOP,即面向切面編程,面向切面編程的目標(biāo)就是分離關(guān)注點。什么是關(guān)注點呢,就是你要做的事,就是關(guān)注點。假如你是個公子哥,沒啥人生目標(biāo),天天就是衣來伸手,飯來張口,整天只知道玩一件事!那么,每天你一睜眼,就光想著吃完飯就去玩(你必須要做的事),但是在玩之前,你還需要穿衣服、穿鞋子、疊好被子、做飯等等等等事情,這些事情就是你的關(guān)注點,但是你只想吃飯然后玩,那么怎么辦呢?這些事情通通交給別人去干。在你走到飯桌之前,有一個專門的仆人A幫你穿衣服,仆人B幫你穿鞋子,仆人C幫你疊好被子,仆人C幫你做飯,然后你就開始吃飯、去玩(這就是你一天的正事),你干完你的正事之后,回來,然后一系列仆人又開始幫你干這個干那個,然后一天就結(jié)束了!

     AOP的好處就是你只需要干你的正事,其它事情別人幫你干。也許有一天,你想裸奔,不想穿衣服,那么你把仆人A解雇就是了!也許有一天,出門之前你還想帶點錢,那么你再雇一個仆人D專門幫你干取錢的活!這就是AOP。每個人各司其職,靈活組合,達(dá)到一種可配置的、可插拔的程序結(jié)構(gòu)。

     從Spring的角度看,AOP最大的用途就在于提供了事務(wù)管理的能力。事務(wù)管理就是一個關(guān)注點,你的正事就是去訪問數(shù)據(jù)庫,而你不想管事務(wù)(太煩),所以,Spring在你訪問數(shù)據(jù)庫之前,自動幫你開啟事務(wù),當(dāng)你訪問數(shù)據(jù)庫結(jié)束之后,自動幫你提交/回滾事務(wù)!

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
簡單理解Spring之IOC和AOP及代碼示例
Struts調(diào)用Spring服務(wù)類的三種方法
Spring hello world
Spring.net架構(gòu)示例(含Aop和Ioc)源碼
漫畫|Spring AOP的底層原理是什么?
我理解的IoC和AOP
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服