【发布时间】:2012-03-05 14:41:51
【问题描述】:
为了我自己的教育,我想构建一个简单的依赖注入框架,其功能类似于 Google 的 Guice。这样在加载类时,它会使用工厂类中的数据预先填充带注释的字段。
我正在使用反射在编译时扫描我的所有工厂类并将这些类保存在静态列表中,以便在加载我的类时,我有一个对我的工厂的引用,然后我可以扫描方法并返回适当的数据。
我遇到的问题是如何预先填充我的类注释字段而不实际在实际类中做任何工作。换句话说,当加载一个类时,我需要能够确定是否有任何字段使用特定的注释进行注释,如果是,则从工厂类中检索值。
是否有某种方法可以在加载类之前对其执行反射,预先填充特定字段,然后返回该类的实例以供使用?
我可以用一个可以完成所有这些工作的基类来扩展我所有需要依赖注入的类,但我认为必须有更好的方法,以便我可以简单地使用@Inject(或我决定使用的任何注释)常说这个领域需要 DI)并且“神奇地”完成了所有工作。
【问题讨论】:
-
如果不使用基本反射 Java API 加载类,您将无法找到带注释的字段。此外,注入是在调用对象的构造函数之后完成的。看这里:code.google.com/p/google-guice/wiki/CustomInjections
标签: java dependency-injection annotations guice