从java反射到AOP

Java反射

  首先介绍一下反射,根据Class类来获取类的属性,构造函数,方法来实现某些功能。


image.png

提供了一种“俯瞰”和“透视”类和对象内部信息的能力,让你在处理一些全局性的、常规方式不好搞定的需求的时候,有了降维打击的能力。通常都是一些框架处理重复性需求用到反射,业务代码较少用反射。

代理

静态代理

  静态代理是手动写代理类,两种方法:一是基于同一接口,而是直接生成子类。

动态代理

  两种代理方法:一是基于JAVA原生反射原理,二是基于CGLIB生成子类的方法。
Java原生反射

  UserService userService = new UserServiceImpl();
        InvocationHandler invocationHandler = new MyInvovationHandler(userService);
        //动态代理技术
        UserService userServiceProxy = (UserService) Proxy.newProxyInstance(userService.getClass().getClassLoader(), userService.getClass().getInterfaces(), invocationHandler);
        System.out.println(userServiceProxy.getName());
        System.out.println(userServiceProxy.getAge());

CGLIB:

  RealSubject target=new RealSubject();
        //       生成 子类/代理对象
        RealSubject proxy=(RealSubject) Enhancer.create(target.getClass(),new MethodInterceptorImpl());
        proxy.sayHello();

AOP

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容