自己实现AOP,AOP实现的步骤分解

自己实现简易的AOP

一、需求:自己实现AOP:1.0版本:在某个方法上加"@InOutLog"注解,那么执行到该方法时,方法的前面、后面会输出日志信息。

  【自己实现AOP 2.0版本见:】

二、思路整理:

  1.涉及的角色:

    ①被代理类;

    ②被代理类要实现的接口;

    ③代理类;

    ④动态创建“代理类的对象”的类;

    ⑤注解类(注解在方法上);

    ⑥IOC容器:BeanFactory(自己实现IOC容器:)。

  2.实现步骤:

    (1)被代理类、被代理类的接口、InOutLog注解类的创建;

    (2)创建一个“动态代理类”,并把“被代理类的实例”传给该代理类;在该动态代理类的invoke()方法中,实现日志的输出,也是在该invoke()方法中调用、执行真正的代理类要执行的那个方法。

    (3)创建一个可以动态创建“代理类的实例”的类,通过该类的getProxyInstance(Object obj)方法可以得到一个动态代理类的实例。
    (4)给方法加通知注解,该方法的实例须已交由IOC容器管理的;
    (5)遍历BeanFactory,找出方法上有@InOutLog注解的bean,为这些bean生成代理类对象(步骤:MyProxy3.getProxyInstance(Object obj));

    (6)用代理类的实例去替代BeanFactory中的被代理类的实例;

三、代码实现:

被代理类的接口:

package MyIOCAndMyAop.bean; public interface Subject { void test(); }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpgypg.html