当前位置: 首页 > wzjs >正文

网站开发要学网站建设方案申请

网站开发要学,网站建设方案申请,广西网站建设介绍,网站更换运营商要重新备案Java动态代理的两种主要形式 动态代理在Java中有两种主要的实现方式,它们各有特点和使用场景: 1. JDK动态代理 (基于接口) 特点: Java标准库自带的功能(java.lang.reflect.Proxy)只能代理接口,不能代理…

Java动态代理的两种主要形式

动态代理在Java中有两种主要的实现方式,它们各有特点和使用场景:

1. JDK动态代理 (基于接口)

特点

  • Java标准库自带的功能(java.lang.reflect.Proxy
  • 只能代理接口,不能代理普通类
  • 运行时动态生成代理类
  • 性能较好

使用场景

  • 当你的类已经实现了接口时
  • Spring AOP默认使用这种方式

示例代码

// 接口
interface UserService {void saveUser();
}// 实现类
class UserServiceImpl implements UserService {public void saveUser() {System.out.println("保存用户");}
}// 创建代理
UserService proxy = (UserService) Proxy.newProxyInstance(UserService.class.getClassLoader(),new Class[]{UserService.class},(proxyObj, method, args) -> {System.out.println("前置处理");Object result = method.invoke(new UserServiceImpl(), args);System.out.println("后置处理");return result;}
);proxy.saveUser();

2. CGLIB动态代理 (基于继承)

特点

  • 需要引入第三方库(cglib)
  • 可以代理普通类,不要求有接口
  • 通过继承目标类并重写方法实现代理
  • 生成速度比JDK代理稍慢,但执行效率高

使用场景

  • 当要代理的类没有实现接口时
  • Spring AOP当目标类没有接口时自动使用CGLIB

示例代码

// 普通类(没有接口)
class ProductService {public void addProduct() {System.out.println("添加产品");}
}// 创建代理
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(ProductService.class);
enhancer.setCallback((MethodInterceptor) (obj, method, args, proxy) -> {System.out.println("前置处理");Object result = proxy.invokeSuper(obj, args);System.out.println("后置处理");return result;
});ProductService proxy = (ProductService) enhancer.create();
proxy.addProduct();

两种方式的对比

特性JDK动态代理CGLIB动态代理
实现方式基于接口基于继承
是否需要接口必须不需要
性能生成快,调用稍慢生成慢,调用快
限制只能代理接口方法不能代理final类/方法
依赖Java内置需要第三方库

如何选择?

  1. 如果目标对象有接口,优先用JDK动态代理(Spring默认策略)
  2. 如果目标对象没有接口,只能用CGLIB
  3. 对性能要求极高时,可以考虑CGLIB
  4. 需要代理final方法时,只能用JDK动态代理

现代框架如Spring会根据情况自动选择最合适的代理方式。


文章转载自:

http://ALt4Gc2c.fdwLg.cn
http://rhmZIoj2.fdwLg.cn
http://cllr4hNU.fdwLg.cn
http://MDMNMsOV.fdwLg.cn
http://LLxOueJJ.fdwLg.cn
http://CTGpAJ7t.fdwLg.cn
http://psjDLiEs.fdwLg.cn
http://O7NAcEoC.fdwLg.cn
http://RgCiPjxe.fdwLg.cn
http://LSynt9rl.fdwLg.cn
http://eflfdfhp.fdwLg.cn
http://XCRGS4oS.fdwLg.cn
http://F7cvbLWq.fdwLg.cn
http://voumTMfj.fdwLg.cn
http://4I7VOAsL.fdwLg.cn
http://II6F4MU3.fdwLg.cn
http://N7GFq6Hv.fdwLg.cn
http://Pf3210ks.fdwLg.cn
http://6Y5dh8eL.fdwLg.cn
http://vq39awEX.fdwLg.cn
http://3jvdbnpQ.fdwLg.cn
http://Dzkaqq6J.fdwLg.cn
http://gxcq2hnH.fdwLg.cn
http://6HhNLOoM.fdwLg.cn
http://imJ4wvRf.fdwLg.cn
http://08NiV5DS.fdwLg.cn
http://E2KTOwVK.fdwLg.cn
http://XPDjRAvn.fdwLg.cn
http://349yD4qD.fdwLg.cn
http://tn2IoAND.fdwLg.cn
http://www.dtcms.com/wzjs/671952.html

相关文章:

  • 广州网站百度排名推广wordpress插件丢失
  • 保山市建设厅网站什么关键词可以搜到那种
  • 网站设计时图片怎么做高质量视频素材网站
  • 怎么做一个免费的网站网站建设与管理 教学视频
  • 如何建设互联网政务门户网站网站的建设时间
  • 汕头企业网站建站模板joomla做类似赶集网的网站
  • 龙口建网站公司价格男孩做网站
  • 阳逻开发区网站建设中企动力不符合网站外链建设原则的是
  • 网站推广 2015谷歌游戏网页制作代码
  • 人工智能在线ai写作网站最新网页游戏传奇
  • 外网进入学校内局域网建设的网站做外贸网站机构
  • 网站开发所需要的的环境页制作与网站建设技术大全
  • 精选合肥网站建设家具网站建设策划方案
  • 360网站提交wordpress评论不要地址邮箱
  • 游戏网站域名网站编程语言培训机构
  • 建站公司用wordpress网站推广员需要做什么
  • 5118站长工具快速排名推荐
  • 互联网站外推广免费落地页制作平台
  • 杭州高端网站建设公司哪家好帮客户做网站平台犯法吗
  • 一个ip可以建设多少个网站深圳系统网站开发
  • 做网站域名wordpress使用国外主题
  • 最全的数据网站网站的关键词库怎么做的那么多
  • 网站制作素材龙华网站建设多少钱
  • 怎么用python做网站wordpress连续获取下一文章
  • 个人网站设计规划注册网站域名用什么好处
  • 深圳外贸建网站网站关键词排名优化工具
  • 广州有专做网站微商营销软件商城
  • 华阴市住房和城乡建设局网站做网站公司的年终总结
  • 大连市中心是哪个区seo站长工具箱
  • 佛山企业建网站用vs2010做网站并连数据库