您的位置:首页 > 编程语言 > Java开发

Spring系列之 (十一):AOP实现方式:动态代理的两个方式(JDK和Cglib)

2018-03-22 13:32 861 查看
JDK动态代理:接口+实现类cglib字节码增强实现类:为了更好的理解spring的AOP技术,我们应该手动编写以上两种实现动态代理的方法,然后才能体会到spring实现AOP技术所带来的便利。 2.1、JDK动态代理。          要使用JDK动态代理的类,必须要有接口。这是前提条件。                

          1.编写UserService接口和UserServiceImpl。                   

          2.创建代理类的工厂proxyFactory                  

            3.增强代码的类                  

            4.测试testApp                  

            测试结果 成功增强了userServiceImpl对象的add方法。如果别的类有需要被增强的方法,那么同样通过创建工厂代理就可以拿到对应的代理对象。然后进行加强                  

                                    2.2、cglib动态代理被代理的对象不需要在实现接口,要求就放松了很多。很多时候都采用cglib来进行动态代理。            需要导入两个jar包                  

            spring已经将cglib和asm整合到了spring-core-3.2.0.jar中,所以我们导入spring的jar包就不需要在重复导这两个包了。            跟JDK动态代理的编写流程是一样的            1.UserServiceImpl。没有接口了                  

            2.增强方法的类                   

                       3.创建代理的工厂(和jdk动态代理有区别)                    

        成功增强方法。注意:CGLib采用了非常底层的字节码技术,其原理是通过字节码技术为一个类创建子类,并在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入横切逻辑,所以                说被代理的类不能有final关键字 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: