千家信息网

如何编写代码来实现内部之间调用拦截

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"如何编写代码来实现内部之间调用拦截",在日常操作中,相信很多人在如何编写代码来实现内部之间调用拦截问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何编
千家信息网最后更新 2026年11月02日如何编写代码来实现内部之间调用拦截

这篇文章主要介绍"如何编写代码来实现内部之间调用拦截",在日常操作中,相信很多人在如何编写代码来实现内部之间调用拦截问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何编写代码来实现内部之间调用拦截"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

下面是CGLib的原生写法(使用net.sf.cglib.proxy.*包内的类实现)

class Foo {public void fun1(){        System.out.println("fun1");        fun2();    }public void fun2() {        System.out.println("fun2");    }}class CGlibProxyEnhancer implements MethodInterceptor{public Object getProxy(Class clazz) {        Enhancer enhancer = new Enhancer();        enhancer.setSuperclass(clazz);        enhancer.setCallback(this);return enhancer.create();    }@Overridepublic Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {        System.out.print("before ");Object result = proxy.invokeSuper(obj,args);return result;    }}public class Test {public static void main(String[] args) {        CGlibProxyEnhancer pf = new CGlibProxyEnhancer();        Foo foo = (Foo) pf.getProxy(Foo.class);        foo.fun1();    }}

打印结果是:
before fun1
before fun2
可以看到,虽然fun2()是通过foo.fun1()调用的,但fun()2依然能被代理。

但如果用Spring AOP那套基本写法的话:

class Foo {public void fun1() {System.out.println("fun1");        fun2();    }public void fun2() {System.out.println("fun2");    }}class Before implements MethodBeforeAdvice {public void before(Method method, Object[] objects, Object o) throws Throwable {System.out.print("before ");    }}public class TestCGLib {public static void main(String[] args) {        Foo foo = new Foo();        BeforeAdvice advice = new Before();        ProxyFactory pf = new ProxyFactory();        pf.setOptimize(true);//启用Cglib2AopProxy创建代理        pf.setProxyTargetClass(true);        pf.setTarget(foo);        pf.addAdvice(advice);        Foo proxy = (Foo) pf.getProxy();        proxy.fun1();    }}

输出结果是:
before fun1
fun2
可见fun2方法没有被代理。

这个帖子中还说到了如何将cglib中的fun2改为private则最终结果与常规AOP的一样.

到此,关于"如何编写代码来实现内部之间调用拦截"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

之间 代码 学习 结果 代理 写法 方法 更多 帮助 实用 接下来 帖子 常规 文章 理论 知识 篇文章 网站 资料 跟着 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州为想互联网科技有限公司 湖南永感互联网科技有限公司 互联网科技卖菜 与互联网科技公司 互联网科技股有哪些 科技类的互联网平台 互联网科技公司的市场部门 中盈科技互联网信息有限公司 互联网科技博主是什么意思 世界互联网领先科技成果获奖 恒生互联网科技业指数调整周期 上海科技产业互联网平台 下一代互联网重大应用科技园 神州科技互联网有限公司 艺电能源互联网科技有限公司招聘 保山互联网科技靠谱吗 北京品多多互联网科技有限公司 互联网科技企业文化 每日互联网科技新闻 互联网科技快速发展优美句子 精品咖啡豆 科技信息互联网 深圳互联网科技公司 互联网科技生活的内容 常德市电业局互联网科技部 南山科技园互联网公司有哪些 互联网新科技动漫ppt素材 全球科技与互联网公司市值变化 广西科技产业互联网是什么 瑞安市蟠桃会互联网科技有限公司
0