电商 做图 网站有哪些北京 建设官方网站
2026/4/18 10:14:55 网站建设 项目流程
电商 做图 网站有哪些,北京 建设官方网站,做企业展示型网站的好处,国外做无纺布的网站从静态代理到动态代理#xff0c;再到 AOP#xff08;一篇彻底讲透#xff09;从静态代理到动态代理#xff0c;再到 AOP#xff08;一篇彻底讲透#xff09;一、先从一个最简单的业务开始1️⃣ 定义接口2️⃣ 实现类#xff08;真正的业务代码#xff09;二、什么是代…从静态代理到动态代理再到 AOP一篇彻底讲透从静态代理到动态代理再到 AOP一篇彻底讲透一、先从一个最简单的业务开始1️⃣ 定义接口2️⃣ 实现类真正的业务代码二、什么是代理核心思想三、静态代理最原始的方式1️⃣ 手写一个代理类2️⃣ 使用代理3️⃣ 执行结果四、静态代理的问题非常致命五、动态代理登场代理类让 JVM 帮你生成六、JDK 动态代理最常见⚠️ 前提条件1️⃣ InvocationHandler代理的核心2️⃣ 创建代理对象3️⃣ 执行流程非常重要七、动态代理解决了什么八、动态代理的痛点九、AOP 是什么十、AOP 写法你最熟悉的样子1️⃣ 业务类完全不关心代理2️⃣ 切面类3️⃣ 效果十一、AOP 和动态代理的真实关系重点十二、一句话总结建议背下来十三、真实开发怎么选结尾从静态代理到动态代理再到 AOP一篇彻底讲透很多人在学 Spring AOP 的时候会觉得“这不就是魔法吗为什么加个Before方法就被拦截了”其实一点都不魔法。AOP 的本质就是代理。这篇文章我们从最原始的静态代理开始一步步走到动态代理最后你会发现AOP 只是把动态代理“包装”得更好用了。一、先从一个最简单的业务开始1️⃣ 定义接口publicinterfaceUserService{voidregister();}2️⃣ 实现类真正的业务代码publicclassUserServiceImplimplementsUserService{Overridepublicvoidregister(){System.out.println(注册用户);}}二、什么是代理核心思想代理 不改原类在方法前后加逻辑比如我们想在register()前后加日志不想改UserServiceImpl不想每个方法都手写日志三、静态代理最原始的方式1️⃣ 手写一个代理类publicclassUserServiceProxyimplementsUserService{privateUserServicetarget;publicUserServiceProxy(UserServicetarget){this.targettarget;}Overridepublicvoidregister(){System.out.println(【前置】记录日志);target.register();System.out.println(【后置】结束日志);}}2️⃣ 使用代理publicclassTest{publicstaticvoidmain(String[]args){UserServicetargetnewUserServiceImpl();UserServiceproxynewUserServiceProxy(target);proxy.register();}}3️⃣ 执行结果【前置】记录日志 注册用户 【后置】结束日志四、静态代理的问题非常致命假设你现在有UserServiceOrderServiceProductService每个都要日志权限事务那你要写多少个代理类❌类爆炸❌大量重复代码❌维护成本极高五、动态代理登场代理类让 JVM 帮你生成核心思想“代理类我不写了运行时自动生成。”六、JDK 动态代理最常见⚠️ 前提条件目标类必须有接口1️⃣ InvocationHandler代理的核心importjava.lang.reflect.InvocationHandler;importjava.lang.reflect.Method;publicclassLogInvocationHandlerimplementsInvocationHandler{privateObjecttarget;publicLogInvocationHandler(Objecttarget){this.targettarget;}OverridepublicObjectinvoke(Objectproxy,Methodmethod,Object[]args)throwsThrowable{System.out.println(【前置】记录日志);Objectresultmethod.invoke(target,args);System.out.println(【后置】结束日志);returnresult;}}所有方法都会走 invoke()2️⃣ 创建代理对象importjava.lang.reflect.Proxy;publicclassTest{publicstaticvoidmain(String[]args){UserServicetargetnewUserServiceImpl();UserServiceproxy(UserService)Proxy.newProxyInstance(target.getClass().getClassLoader(),target.getClass().getInterfaces(),newLogInvocationHandler(target));proxy.register();}}3️⃣ 执行流程非常重要proxy.register() ↓ JVM 自动生成的代理类 ↓ InvocationHandler.invoke() ↓ 前置逻辑 ↓ 真实方法执行 ↓ 后置逻辑你没写代理类但 JVM 帮你写了七、动态代理解决了什么✅ 不用手写代理类✅ 一套逻辑代理所有方法✅ 横切逻辑高度复用但问题也来了 八、动态代理的痛点Proxy.newProxyInstance(...)InvocationHandler.invoke(...)Method.invoke(...)❌ 写法复杂❌ 可读性差❌ 每个项目都要重复造轮子于是就出现了 ——AOP九、AOP 是什么AOP面向切面编程是一种思想本质仍然是代理它帮你做了三件事自动创建代理对象自动决定“代理哪些方法”自动管理生命周期十、AOP 写法你最熟悉的样子1️⃣ 业务类完全不关心代理ServicepublicclassUserService{publicvoidregister(){System.out.println(注册用户);}}2️⃣ 切面类AspectComponentpublicclassLoggingAspect{Before(execution(* com.example.UserService.*(..)))publicvoidbefore(){System.out.println(【前置】记录日志);}AfterReturning(execution(* com.example.UserService.*(..)))publicvoidafter(){System.out.println(【后置】结束日志);}}3️⃣ 效果【前置】记录日志 注册用户 【后置】结束日志十一、AOP 和动态代理的真实关系重点对比动态代理AOP是什么技术手段编程思想 框架是否手写是❌使用难度高低底层反射 / 字节码动态代理 / CGLIBSpring AOP 底层仍然是动态代理十二、一句话总结建议背下来静态代理我自己写代理类动态代理JVM 帮我写代理类AOP我只写规则代理交给框架十三、真实开发怎么选✅写业务 → 直接用 AOP✅学原理 / 写框架 → 学动态代理结尾当你理解了静态代理在干嘛动态代理解决了什么AOP 封装了哪些细节你就会发现AOP 从来不是魔法它只是“代理的高级用法”。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询