SpringAOP有两种代理模式对吧,你解释一下有什么区别

首先是jdk动态代理,基于接口的动态代理要求就是要进行代理的对象至少要实现一个接口,因为后续在生成代理类的时候要根据反射要去拿类信息以及类实现的接口信息。

定义一个类去实现invocationHandler然后重写他的invoke方法,然后在invoke中进行业务增强

,创建代理类的时候,要通过反射拿到类和类实现的接口信息

下来就是CGLIB动态代理,CGLIB是一个代码生成库,他一般是基于类的动态代理,不需要实现接口,但是有个要求就是要代理的类不能被final修饰,因为被修饰后无法创建子类,但是CGLIB是动态创建了一个子类去重写父类的方法做了业务增强

全部评论

相关推荐

评论
1
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务