久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

SpringCGLlB中怎么實現(xiàn)動態(tài)代理-創(chuàng)新互聯(lián)

SpringCGLlB中怎么實現(xiàn)動態(tài)代理,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

成都創(chuàng)新互聯(lián)公司專注于企業(yè)網(wǎng)絡(luò)營銷推廣、網(wǎng)站重做改版、衡陽網(wǎng)站定制設(shè)計、自適應品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計、商城網(wǎng)站開發(fā)、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應式網(wǎng)頁設(shè)計等建站業(yè)務,價格優(yōu)惠性價比高,為衡陽等各大城市提供網(wǎng)站開發(fā)制作服務。

1. 創(chuàng)建目標類 GoodsDao

在 com.mengma.dao 包下創(chuàng)建目標類 GoodsDao,在類中定義增、刪、改、查方法,并在每個方法編寫輸出語句,如下所示。

package com.mengma.dao;public class GoodsDao {  public void add() {    System.out.println("添加商品...");  }  public void update() {    System.out.println("修改商品...");  }  public void delete() {    System.out.println("刪除商品...");  }  public void find() {    System.out.println("修改商品...");  }}

2. 創(chuàng)建代理類 MyBeanFactory

在 src 目錄下創(chuàng)建一個名為 com.mengma.cglib 的包,該包下創(chuàng)建類 MyBeanFactory,如下所示。

package com.mengma.cglib;import java.lang.reflect.Method;import org.springframework.cglib.proxy.Enhancer;import org.springframework.cglib.proxy.MethodInterceptor;import org.springframework.cglib.proxy.MethodProxy;import com.mengma.dao.GoodsDao;import com.mengma.jdk.MyAspect;public class MyBeanFactory {  public static GoodsDao getBean() {    // 準備目標類    final GoodsDao goodsDao = new GoodsDao();    // 創(chuàng)建切面類實例    final MyAspect myAspect = new MyAspect();    // 生成代理類,CGLIB在運行時,生成指定對象的子類,增強    Enhancer enhancer = new Enhancer();    // 確定需要增強的類    enhancer.setSuperclass(goodsDao.getClass());    // 添加回調(diào)函數(shù)    enhancer.setCallback(new MethodInterceptor() {      // intercept 相當于 jdk invoke,前三個參數(shù)與 jdk invoke—致      @Override      public Object intercept(Object proxy, Method method, Object[] args,          MethodProxy methodProxy) throws Throwable {        myAspect.myBefore(); // 前增強        Object obj = method.invoke(goodsDao, args); // 目標方法執(zhí)行        myAspect.myAfter(); // 后增強        return obj;      }    });    // 創(chuàng)建代理類    GoodsDao goodsDaoProxy = (GoodsDao) enhancer.create();    return goodsDaoProxy;  }}

上述代碼中,應用了 CGLIB 的核心類 Enhancer。在第 19 行代碼調(diào)用了 Enhancer 類的 setSuperclass() 方法,確定目標對象。

第 21 行代碼調(diào)用 setCallback() 方法添加回調(diào)函數(shù);第 24 行代碼的 intercept() 方法相當于 JDK 動態(tài)代理方式中的 invoke() 方法,該方法會在目標方法執(zhí)行的前后,對切面類中的方法進行增強;第 33~34 行代碼調(diào)用 Enhancer 類的 create() 方法創(chuàng)建代理類,最后將代理類返回。

3. 創(chuàng)建測試類

在 com.mengma.cglib 包下創(chuàng)建測試類 CGLIBProxyTest,編輯后如下所示。

package com.mengma.cglib;import org.junit.Test;import com.mengma.dao.GoodsDao;public class CGLIBProxyTest {  @Test  public void test() {    // 從工廠獲得指定的內(nèi)容(相當于spring獲得,但此內(nèi)容時代理對象)    GoodsDao goodsDao = MyBeanFactory.getBean();    // 執(zhí)行方法    goodsDao.add();    goodsDao.update();    goodsDao.delete();    goodsDao.find();  }}

看完上述內(nèi)容,你們掌握SpringCGLlB中怎么實現(xiàn)動態(tài)代理的方法了嗎?如果還想學到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

文章題目:SpringCGLlB中怎么實現(xiàn)動態(tài)代理-創(chuàng)新互聯(lián)
文章鏈接:http://sd-ha.com/article38/doshpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、網(wǎng)站排名、虛擬主機、服務器托管網(wǎng)站導航、網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設(shè)