久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

Spring如何基于Proxy及cglib實現動態代理

瀏覽:47日期:2023-09-01 10:15:01

spring中提供了兩種動態代理的方式,分別是Java Proxy以及cglib

JavaProxy只能代理接口,而cglib是通過繼承的方式,實現對類的代理

添加一個接口以及對應的實現類

public interface HelloInterface { void sayHello();}

public class HelloInterfaceImpl implements HelloInterface { @Override public void sayHello() { System.out.println('hello'); }}

JavaProxy通過實現InvocationHandler實現代理

public class CustomInvocationHandler implements InvocationHandler { private HelloInterface helloInterface; public CustomInvocationHandler(HelloInterface helloInterface) { this.helloInterface = helloInterface; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println('before hello for proxy'); Object result = method.invoke(helloInterface, args); System.out.println('after hello for proxy'); return result; }}

而cglib實現MethodInterceptor進行方法上的代理

public class CustomMethodInterceptor implements MethodInterceptor { @Override public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable { System.out.println('before hello for cglib'); Object result = methodProxy.invokeSuper(o, objects); System.out.println('after hello for cglib'); return result; }}

分別實現調用代碼

public static void main(String[] args) { Enhancer enhancer = new Enhancer(); enhancer.setSuperclass(HelloInterfaceImpl.class); enhancer.setCallback(new CustomMethodInterceptor()); HelloInterface target = (HelloInterface) enhancer.create(); target.sayHello(); CustomInvocationHandler invocationHandler = new CustomInvocationHandler(new HelloInterfaceImpl()); HelloInterface target2 = (HelloInterface) Proxy.newProxyInstance(Demo.class.getClassLoader(), new Class[]{HelloInterface.class}, invocationHandler); target2.sayHello(); }

可以看到對于的代理信息輸出

before hello for cglibhelloafter hello for cglibbefore hello for proxyhelloafter hello for proxy

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 永昌县| 南投市| 会同县| 侯马市| 桐梓县| 城口县| 遂宁市| 桐乡市| 和田县| 闽清县| 扶沟县| 时尚| 株洲市| 白银市| 黔江区| 馆陶县| 丹凤县| 新源县| 宜昌市| 锡林郭勒盟| 宁南县| 九江县| 怀宁县| 新河县| 洞头县| 江达县| 阿城市| 霍林郭勒市| 洪江市| 马龙县| 钟山县| 甘孜县| 东源县| 资源县| 柏乡县| 商南县| 抚顺县| 望都县| 双辽市| 巴里| 吉首市|