【问题标题】:Iterating Specific Classes at Runtime Through a Global Variable在运行时通过全局变量迭代特定类
【发布时间】:2012-03-03 20:55:21
【问题描述】:

我正在构建一个依赖注入框架,该过程的一部分包括遍历类路径中的所有类文件,并将使用特定注释注释的类存储在枚举对象中。在依赖注入方面,当一个类被加载时,它会找到所有的@inject 表示法,然后搜索所有包含@injectResource 表示法的类,然后返回我需要执行DI 部分的方法值。

我的问题是,在编译时构建枚举类列表似乎更合理,这样当我的注入字段需要搜索这些类时,我不必每次都搜索项目中的每个类。

我想我会在编译时通过 servlet 配置构建类列表,但是我可以在哪里存储这个“全局”列表,以便我可以在整个项目中重复访问它?

在我的脑海中,我想在编译时我将创建一个包含枚举列表的静态类,但我不喜欢使用静态类,我不确定这是否是最最佳方法。

【问题讨论】:

  • 应用上下文?虽然如果它不变,谁在乎它是否是单例/“静态类”?一种或另一种方式,如果有一个单一的记录系统,它是一个单例/“静态类”/等。 -- 不要陷入认为它们永远没有用处的陷阱。

标签: java servlets annotations


【解决方案1】:

您可以使用 Servlet Context,顺便说一下,为什么每次创建新类时都要重新扫描所有类?为什么不保留对类的引用并使用它们(而不是对类列表进行硬编码)?

【讨论】:

  • 这正是这个问题的意义所在。但是我无法通过标准的 java 类访问 servlet 上下文,并且传递引用首先破坏了依赖注入框架的目的。
  • 您将如何在标准 Java 类中访问您的 DI 容器?是通过调用静态方法吗?
猜你喜欢
  • 2013-01-10
  • 2022-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多