jdk的动态代理和CGLIB的区别

jdk的动态代理和CGLIB的区别
先说一下我对代理的理解:
    我们租房或者买房的时候,我们只关注房子多大,多少钱,还有一些其他需求,但是这个过程有时候需要你自己
    去找资源,要商量价格,要自己拟定合同的内容,我们上班哪有那么多时间去管这些事呢,因此中介油然而生,
    中介帮你完成我们与自己需求不关注的点,这就跟代理类是一个意思。
jdk代理是基于接口实现类来说的,如果你没有实现接口,则不给你代理:
    当一个实现类实现一个接口时,实现类实现了接口的方法。在实际开发过程中我们最重要的是实现业务逻辑,
    但是有一些像日志之类的功能跟业务没有多大关系,所以就需要让别的类来现实日志功能,这时候就需要代理类来
    帮助我们完成这个任务。
    代理的大概原理就是:代理类实现接口的方法,在实现的方法里,自己可以想怎么玩怎么玩,玩完之后再调取
    甲方(也就是谁让我们代理那个实现类)对应的方法,执行完我还可以想干什么干什么。
CGLIB与jdk代理不同的是 CGLIB是继承类方式来实现的,这种缺点就是不能代理final修饰的类

注:利用aop实现事务功能时,要注意项目对应的包下的类是否是通过接口来实现的,这是事务不起作用的可能原因。

猜你喜欢

转载自blog.csdn.net/lixiaoyi01/article/details/79238678