代理模式--动态代理 cglic
来源:互联网 发布:语音朗读软件 编辑:程序博客网 时间:2024/06/07 14:37
package com.gqc.factory;import java.lang.reflect.Method;import net.sf.cglib.proxy.Enhancer;import net.sf.cglib.proxy.MethodInterceptor;import net.sf.cglib.proxy.MethodProxy;import com.gqc.service.SomeService;public class MyCglibFactory implements MethodInterceptor {private SomeService target;public MyCglibFactory() {target = new SomeService();}public SomeService myCglibCreator(){//创建增强器对象Enhancer enhancer=new Enhancer();//指定目标类,即父类 (因为cglib是通过创建子类来增强父类的)enhancer.setSuperclass(SomeService.class);//设置回掉接口对象enhancer.setCallback(this);return (SomeService) enhancer.create();}//回调方法@Overridepublic Object intercept(Object obj, Method method, Object[] args,MethodProxy proxy) throws Throwable {//调用目标方法Object result = method.invoke(target, args);if (result!=null) {result = ((String) result).toUpperCase();}return result;}}
package com.gqc.service;//目标类public class SomeService {public String dofirst() {System.out.println("执行dofirst");return "abcde";}public void doSecond() {System.out.println("执行doSecond");}}
package com.gqc.test;import com.gqc.factory.MyCglibFactory;import com.gqc.service.SomeService;public class MyTest {public static void main(String[] args) {SomeService service=new MyCglibFactory().myCglibCreator();String result = service.dofirst();System.out.println("result="+result);service.doSecond();}}
阅读全文
0 0
- 代理模式--动态代理 cglic
- 代理模式--动态代理
- 代理模式 & 动态代理
- 代理模式--动态代理
- 代理模式(动态代理)
- 代理模式-动态代理
- 代理模式-动态代理
- 代理模式动态代理
- 代理模式-动态代理
- 代理模式 -动态代理
- 代理模式---动态代理
- 代理模式-动态代理
- 代理模式之动态代理
- java代理模式--动态代理
- 代理模式之动态代理
- 代理模式之动态代理
- 代理模式之动态代理
- 代理模式和动态代理
- ECharts官方教程(十二)【自定义系列】
- D3D11和D3D12多线程渲染框架的比较(五)
- 如何让DIV变成默认高度,如果内容过长自动加长
- ECharts官方教程(十三)【富文本标签】
- IDW
- 代理模式--动态代理 cglic
- 一起Talk Android吧(第五十四回:Android中的Fragment显示与隐藏一)
- 第1章 Nginx初探
- Docker 学习资源整理
- PHP中的浅复制与深复制
- Linux Commands
- 【备忘】2017年最新Google面试官亲授备战Java校招面试视频讲解教程
- 算法导论习题练习——红黑树的插入和删除
- 台湾大学深度学习课程 学习笔记 lecture2-1 Backpropagation