我想构建自己的基于Java注释的自定义DI框架,我需要一个小小的方向开始。我知道使用诸如guice或spring之类的许多精彩框架中的一个会容易得多,但为了我自己的好奇心,我想构建自己的框架。依赖注入与注解
我对注释不是很熟悉,所以我在查找资源时遇到了一些问题,并且非常感谢某人解释了我需要采取的一些步骤来开始。
如前所述,id喜欢采取工厂方法,并以某种方式将我的getter标记为@Resource或@Injectable类型注释,然后在我的业务类中可以使用@Inject注释设置我的变量依赖项,资源自动可用。
有没有人有任何资源可以传递,以帮助我理解基于注释标记方法的过程,然后从基于注释的单独类中检索值。我需要一个小小的方向,让我开始。当然,一旦我走了,我会很高兴在这里发布一些代码示例,为了其他人今后的阅读。
编辑
我使用的资源放在了一起:
How to find annotations in a given package: Stack Overflow ?
Scanning Annotations at Runtime
我还没有真正完成还没有写这个,但基本任务李ST将是如下(的人谁可能有兴趣做,今后类似的东西)
在类运行时扫描所有@Inject领域,并得到对象类型。
对注释方法@InjectableResource扫描所有类(或只是一个特定的类包(我还没有确定 )))。
循环所有带注释的方法,并找到返回我要查找的对象类型的 方法。
运行该方法并获得依赖关系。
注意到在扫描所有类时我将使用一个名为Javassist的库也会很有帮助。基本上,这样做可以让我在不实际加载类的情况下读取每个类的字节码信息。所以我可以读取注释字符串而不会产生严重的内存问题。
可以与标准甲骨文注释步道】开始(http://docs.oracle.com/javase/tutorial/java/javaOO/annotations.html)。您需要一些方法来扫描整个类路径中的资源,一种方式是使用像[Google Reflections](http://code.google.com/p/reflections/)这样的工具。最后,您将需要一些操作类的方法,例如[Javassist](http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/)。 – Perception 2012-03-03 17:18:10