如何编写代码来实现内部之间调用拦截
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要介绍"如何编写代码来实现内部之间调用拦截",在日常操作中,相信很多人在如何编写代码来实现内部之间调用拦截问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何编
千家信息网最后更新 2025年11月08日如何编写代码来实现内部之间调用拦截
这篇文章主要介绍"如何编写代码来实现内部之间调用拦截",在日常操作中,相信很多人在如何编写代码来实现内部之间调用拦截问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何编写代码来实现内部之间调用拦截"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
下面是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安全错误
数据库的锁怎样保障安全
天猫软件开发
网络安全重点领域是什么
水平线数据库怎么插入
4个硬盘服务器只加载出来一个
联想塔式服务器售后维修
游戏音乐下载软件开发
数据库可以分析不同的系统
临时性的数据库
某项目数据库管理系统研制
查sybase数据库用户
腾讯 面试 软件开发
徐州可视化智慧园区软件开发
浪潮服务器 风扇接口
湛江通信软件开发价格比较
浙大智能通信网络安全专业
高级软件开发证书能抵税吗
阿里云数据库添加安全组
lol观战连接服务器失败
第三级网络安全等级保护建设
根据数据库提取一个人的名字
sql数据库状态查看
阿里巴巴淘系技术部数据库
软件开发合同缴纳印花税吗
服务器加电测试报告
互联网科技公司起什么名字
银行通信网络安全
临沧网络安全局
高级软件开发证书能抵税吗
江苏ios软件开发项目管理
聊城软件开发方案