异常: Exception in thread "main" java.lang.ClassCastException: com.sun.proxy.$Proxy2 cannot be cast to com.pro.service.impl.UserServiceImpl at com.pro.t ...
分类:
编程语言 时间:
2017-12-06 20:02:49
阅读次数:
620
一、CGlib原理jdk实现动态代理需要实现类通过接口定义业务方法,对于没有接口的类,如何实现动态代理呢?这就需要CGlib了,CGlib采用非常底层的字节码技术,其原理是用字节码技术为一个类创建子类,并在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入横切逻辑。JDK动态代理和CGlib动态代理均是实现SpringAop的基础。二、代码实现1. package net
分类:
其他好文 时间:
2017-11-30 20:59:18
阅读次数:
162
1、spring aop的实现原理: spring提供了两种方式来生成代理对象:JDK原生的JDKProxy和CgLib,具体使用哪种方式是有AOPProxyFactory根据AdvisedSupport对象的配置来决定。默认的策略是如果目标类是接口就用jdkProxy,否则就用CGLIb来生成代理 ...
分类:
编程语言 时间:
2017-11-27 16:48:51
阅读次数:
201
文章首发于 "【博客园 陈树义】" ,点击跳转到原文 "深入浅出Java动态代理" 代理模式是设计模式中非常重要的一种类型,而设计模式又是编程中非常重要的知识点,特别是在业务系统的重构中,更是有举足轻重的地位。代理模式从类型上来说,可以分为 静态代理和动态代理 两种类型。今天我将用非常简单易懂的例子 ...
分类:
编程语言 时间:
2017-11-21 10:40:17
阅读次数:
155
一、Spring MVC环境搭建:(Spring 2.5.6 + Hibernate 3.2.0) 1. jar包引入 Spring 2.5.6:spring.jar、spring webmvc.jar、commons logging.jar、cglib nodep 2.1_3.jar Hibern ...
分类:
编程语言 时间:
2017-11-19 13:27:57
阅读次数:
220
文档顶层结构: configuration 配置 properties 属性 settings 设置 typeAliases 类型命名 typeHandlers 类型处理器 objectFactory 对象工厂 plugins 插件 environments 环境 environment 环境变量 ...
分类:
其他好文 时间:
2017-11-18 18:52:04
阅读次数:
198
代理模式:代理类和被代理类实现共同的接口(或继承),代理类中存有指向被代理类的索引,实际执行时通过调用代理类的方法、实际执行的是被代理类的方法。 而AOP,是通过动态代理实现的。 一、简单来说: JDK动态代理只能对实现了接口的类生成代理,而不能针对类 CGLIB是针对类实现代理,主要是对指定的类生 ...
分类:
其他好文 时间:
2017-11-12 23:00:24
阅读次数:
216
显然, lookup-method 的name 对应的方法 是可以有方法参数的, 但是, 我发现, 参数无法传递, 传过去的参数好像被丢入了黑洞一般。。。 非常奇怪。 lookup-method 的name 即 对应的方法 不能是private, 也不能是 static , 这个应该是由 cglib ...
分类:
编程语言 时间:
2017-11-12 11:14:08
阅读次数:
211
在正式进入Spring AOP的源码实现前,我们需要准备一定的基础也就是面向切面编程的核心——动态代理。 动态代理实际上也是一种结构型的设计模式,JDK中已经为我们准备好了这种设计模式,不过这种JDK为我们提供的动态代理有2个缺点: 鉴于以上2个缺点,于是就出现了第二种动态代理技术——CGLIB(C ...
分类:
编程语言 时间:
2017-11-10 01:34:34
阅读次数:
166
AOP(Aspect Orient Programming),面向切面编程,是对面向对象编程OOPS的一种补充 面向对象编程使用静态角度考虑程序的结构,而面向切面编程是从动态角度考虑程序运行过程 AOP底层,就是采用动态代理模式实现的。采用了两种代理:JDK的动态代理域CGLIB的动态代理 AOP编 ...
分类:
编程语言 时间:
2017-11-04 21:36:40
阅读次数:
139