如何解决在哪里可以为基于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 举报,一经查实,本站将立刻删除。