繁体   English   中英

带注释的依赖注入

[英]Dependency Injection With Annotations

我想基于Java注释构建我自己的自定义DI框架,我需要一些方向来开始。 我知道使用诸如guice或spring之类的许多精彩框架之一会更容易,但为了我自己的好奇心,我想建立自己的框架。

我对注释不是很熟悉,所以我在查找资源方面遇到了一些麻烦,并且非常感谢有人说出了我需要采取的一些步骤来开始。

如前所述,id喜欢采用工厂方法并以某种方式使用@Resource或@Injectable类型注释标记我的getter,然后在我的业务类中能够使用@Inject注释设置我的变量依赖项并使资源自动可用。

有没有人可以传递任何类型的资源来帮助我理解基于注释标记方法的过程,然后根据注释从单独的类中检索值。 我需要一点方向,让我开始。 当然,一旦我开始,我会很高兴在这里发布一些代码示例,以便其他人今后阅读。

编辑

我用来将这些资源放在一起的资源:

Java反射:注释

如何在给定的包中找到注释:Stack Overflow?

在运行时扫描注释

我还没有写完这篇文章,但基本的任务列表将如下(对于任何可能有兴趣在将来做类似事情的人)

  1. 在类运行时扫描所有@Inject字段并获取对象类型。

  2. 扫描所有类(或只是一个特定的类包(我还没有决定))注释方法@InjectableResource。

  3. 循环所有带注释的方法,找到返回我正在寻找的对象类型的方法。

  4. 运行该方法并获取依赖项。

另外请注意,在扫描所有类时,我将使用名为Javassist的库。 基本上它的作用是允许我读取每个类的字节码信息而不实际加载类。 所以我可以读取注释字符串而不会产生严重的内存问题。

有趣的是你想​​建立自己的。 我喜欢Google Guice - 它使代码如此优雅和简单。

我已经使用过本指南,之前我发现它对于学习注释非常有用,以及如何将它们从类和方法中拉出来。

您必须使用@interface定义自己的注释。 然后你必须定义某种类来进行绑定,例如你在这个具体类中看到一个接口绑定。 最后,你需要一些逻辑来完全拉它,例如遍历每个类,找到每个注释,然后找到合适的绑定。

通过Reflections和singletons来考虑懒惰的实例化。 例如,Guice允许您使用单例,因此您只使用具体类的一个实例,或者每次都可以绑定一个新版本。

祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM