微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在哪里可以为基于aop的库创建注射器

如何解决在哪里可以为基于aop的库创建注射器

我目前正在建立一个图书馆,供其他图书馆使用。我的库使用AspectJ来拦截常见的函数调用并进行一些修改。因此,其他库只需要导入我的包就可以了。换句话说,外部库不需要实例化我的程序包中的任何内容

我的程序包当前使用Constants类来跟踪常量,但是我希望使用guice为我完成此操作。这是我所想到的示例:

// pseudoish-code
@Aspect
public class MyAspect {
   @Inject
   @Named("myConstant")
   private static String myConstant;
   // currently I'm doing:
   // private static String myConstant = Constants.myConstant;

   /*
   * This method handles intercepting calls to foo(). External libraries using my
   * package will have their foo() method intercepted and modified
   */
   @Around("execution(* ...foo(..))")
   public Object handleFooIntercept(ProceedingJoinpoint jp) {
      // do stuff with myConstant
   }
}

如果我正确理解guice,则需要制作一个注射器来实际注入这些值:

Injector injector = createInjector(new MyModule());   // binds and provides constants
MyAspect myAspect = injector.getInstance(MyAspect.class);

问题是我不知道该放在哪里。我的包裹没有入口点;它仅在其他库调用foo()时使用。我的设计理念是否存在严重缺陷?我应该如何处理?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。