11.7每日总结

2、AopManager

   AopManager 用于管理 Aop 的各种配置

2.1、addMapping(...)

    addMapping 用于建立接口、抽象类到其实现类之间的映射关系,例如:

  1. AopManager.me().addMapping(Service.class, MyService.class);

   通过上面的映射,下面的代码将会为 Serivce 创建 MyService 对象,而非 Service 对象:

  1. // 这里获取到的是 MyService 对象
  2. Aop.get(Service.class);
  3.  
  4. // 这里被注入的是 MyService 对象
  5. @Inject
  6. Service service;

     AopManager.me().addMapping(...) 的用途是为接口、抽象类指定被注入的具体实现类。

2.2、addSingletonObject(...)

     由于 Aop 创建对象时不支持为构造方法传递参数,所以还需提供 addSingletonObject(...) 添加单例对象:

  1. // Service 类的构造方法中传入了两个参数
  2. Service service = new Service(paraAaa, paraBbb);
  3. AopManager.me().addSingletonObject(service);

    上面代码添加完成以后,可以在任何地方通过下面的方式获取单例对象:

  1. // 获取时使用单例对象
  2. service = Aop.get(Service.class);
  3.  
  4. // 注入时也可以使用前面配置的单例对象
  5. @Inject
  6. Service service;

    在添加为单例对象之前还可以先为其注入依赖对象:

  1. Service service = new Service(paraAaa, paraBbb);
  2. // 这里是对 Service 进行依赖注入
  3. Aop.inject(service);
  4.  
  5. // 为单例注入依赖以后,再添加为单例供后续使用
  6. AopManager.me().addSingletonObject(service);

2.3、setAopFactory(...)

    setAopFactory(...) 用于用户扩展出 AopFactory 实现类,实现更多扩展性功能,例如 jboot 项目中对于注入远程访问对象的扩展:https://gitee.com/JbootProjects/jboot/blob/master/src/main/java/io/jboot/aop/JbootAopFactory.java ,JbootAopFactory.java 中的 doInjectRPC 即注入远程过程调用的实现类。

posted @ 2023-11-08 19:34  听着DJ读童话  阅读(25)  评论(0)    收藏  举报