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

外包公司 网站建设 上海虚拟云主机wordpress

外包公司 网站建设 上海,虚拟云主机wordpress,凡科 建设淘宝客网站,网站建设私活Spring的两种动态代理#xff1a;Jdk和Cglib 的区别和实现 一、原理区别#xff1a; java动态代理是利用反射机制生成一个实现代理接口的匿名类#xff0c;在调用具体方法前调用InvokeHandler来处理。 而cglib动态代理是利用asm开源包#xff0c;对代理对象类的class文件…Spring的两种动态代理Jdk和Cglib 的区别和实现 一、原理区别 java动态代理是利用反射机制生成一个实现代理接口的匿名类在调用具体方法前调用InvokeHandler来处理。 而cglib动态代理是利用asm开源包对代理对象类的class文件加载进来通过修改其字节码生成子类来处理。 1、如果目标对象实现了接口默认情况下会采用JDK的动态代理实现AOP 2、如果目标对象实现了接口可以强制使用CGLIB实现AOP 3、如果目标对象没有实现了接口必须采用CGLIB库spring会自动在JDK动态代理和CGLIB之间转换 如何强制使用CGLIB实现AOP 1添加CGLIB库SPRING_HOME/cglib/*.jar 2在spring配置文件中加入aop:aspectj-autoproxy proxy-target-class“true”/ JDK动态代理和CGLIB字节码生成的区别 1JDK动态代理只能对实现了接口的类生成代理而不能针对类 2CGLIB是针对类实现代理主要是对指定的类生成一个子类覆盖其中的方法 因为是继承所以该类或方法最好不要声明成final 二、代码实现 用户管理接口 package com.lf.shejimoshi.proxy.entity; //用户管理接口 public interface UserManager {//新增用户抽象方法void addUser(String userName,String password);//删除用户抽象方法void delUser(String userName);}用户管理接口实现类 package com.lf.shejimoshi.proxy.entity; //用户管理实现类,实现用户管理接口 public class UserManagerImpl implements UserManager{//重写新增用户方法Overridepublic void addUser(String userName, String password) {System.out.println(调用了新增的方法);System.out.println(传入参数为 userName: userName password: password);}//重写删除用户方法Overridepublic void delUser(String userName) {System.out.println(调用了删除的方法);System.out.println(传入参数为 userName: userName);}}JDK动态代理 package com.lf.shejimoshi.proxy.jdk;import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy;import com.lf.shejimoshi.proxy.entity.UserManager; import com.lf.shejimoshi.proxy.entity.UserManagerImpl; //JDK动态代理实现InvocationHandler接口 public class JdkProxy implements InvocationHandler {private Object target ;//需要代理的目标对象Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println(JDK动态代理监听开始);Object result method.invoke(target, args);System.out.println(JDK动态代理监听结束);return result;}//定义获取代理对象方法private Object getJDKProxy(Object targetObject){//为目标对象target赋值this.target targetObject;//JDK动态代理只能针对实现了接口的类进行代理newProxyInstance 函数所需参数就可看出return Proxy.newProxyInstance(targetObject.getClass().getClassLoader(), targetObject.getClass().getInterfaces(), this);}public static void main(String[] args) {JdkProxy jdkProxy new JdkProxy();//实例化JDKProxy对象UserManager user (UserManager) jdkProxy.getJDKProxy(new UserManagerImpl());//获取代理对象user.addUser(admin, 123123);//执行新增方法}}JDK动态代理运行结果 Cglib动态代理需要导入两个jar包asm-5.2.jar,cglib-3.2.5.jar。版本自行选择 package com.lf.shejimoshi.proxy.cglib;import java.lang.reflect.Method;import com.lf.shejimoshi.proxy.entity.UserManager; import com.lf.shejimoshi.proxy.entity.UserManagerImpl;import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy;//Cglib动态代理实现MethodInterceptor接口 public class CglibProxy implements MethodInterceptor {private Object target;//需要代理的目标对象//重写拦截方法Overridepublic Object intercept(Object obj, Method method, Object[] arr, MethodProxy proxy) throws Throwable {System.out.println(Cglib动态代理监听开始);Object invoke method.invoke(target, arr);//方法执行参数target 目标对象 arr参数数组System.out.println(Cglib动态代理监听结束);return invoke;}//定义获取代理对象方法public Object getCglibProxy(Object objectTarget){//为目标对象target赋值this.target objectTarget;Enhancer enhancer new Enhancer();//设置父类,因为Cglib是针对指定的类生成一个子类所以需要指定父类enhancer.setSuperclass(objectTarget.getClass());enhancer.setCallback(this);// 设置回调 Object result enhancer.create();//创建并返回代理对象return result;}public static void main(String[] args) {CglibProxy cglib new CglibProxy();//实例化CglibProxy对象UserManager user (UserManager) cglib.getCglibProxy(new UserManagerImpl());//获取代理对象user.delUser(admin);//执行删除方法}}Cglib动态代理运行结果 有什么问题可以留言讨论
http://www.lebaoying.cn/news/37595.html

相关文章:

  • 小公司网站建设wordpress搬家插件
  • 建设手机版网站做外贸如何建立网站
  • 网站建设接单技巧网站怎么做seo收录
  • 温州做网站制作房产网站怎么推广
  • 重庆大学建设管理与房地产学院网站wordpress插件没有效果
  • nas可以做网站超级外链工具
  • 太原的网站搭建公司APP加网站建设预算多少钱
  • 淘宝客网站开发平台三星网站建设内容
  • wordpress 用户 注册页面模板台州做网站优化哪家好
  • 电子商务网站开发与应用论文今天最新生猪价格
  • 口碑好网站建设公司电话高校网站群建设方案
  • 速贝cms建站系统wordpress移动端菜单
  • 音酷网站建设郑州做网站茂睿科技
  • 外贸网站电子建设购物网站开发英文文献
  • 电商网站开发平台哪个好设置WordPress文章图片
  • 网站制作流程视频教程重庆忠县网站建设公司哪家专业
  • 打造一个网站需要多少钱seo网站营销推广全程实例 pdf
  • wordpress demo iframe常州seo
  • 域名有了怎么建设网站如何给网站写文章
  • 福州响应式网站网站代运营合同模板
  • 电子商务网站建设模板下载写资料的网站有哪些内容
  • 建设网站代理商全国企业信用信息公示系统吉林
  • 国外优秀个人网站欣赏网站建设策
  • 外贸网站赚钱信丰网站建设
  • 桓台网站推广韩国 网站 域名
  • 国外专门做旅行社的网站变性 wordpress
  • 猎头网站 做猎头的流程实体店引流推广方法
  • 做系统用哪个网站好wordpress移动顶部导航
  • 网站的二维码怎么变小广东省建设项目安全标准自评网站
  • 网站建设歺金手指排名15网页设计怎么写