Java 在运行时通过全局变量迭代特定类

Java 在运行时通过全局变量迭代特定类,java,servlets,annotations,Java,Servlets,Annotations,我正在构建一个依赖项注入框架,该过程的一部分包括遍历类路径中的所有类文件,并将带有特定注释的类存储在枚举对象中。在依赖项注入方面,当加载一个类时,它会找到所有@injectResource符号,然后搜索包含@injectResource符号的所有类,然后返回执行DI部分所需的方法值 我的问题是,在编译时构建枚举类列表似乎更合理,这样当我的注入字段需要搜索这些类时,我就不必每次都搜索项目中的每个类 我想我将在编译时通过servlet配置构建类列表,但是我可以在哪里存储这个“全局”列表,以便在整个项

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

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

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


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

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

应用程序上下文?尽管它是不变的,但谁在乎它是否是一个单例/静态类呢?不管怎样,如果有一个单一的记录系统,它就是一个单例/静态类/等等——不要陷入这样的陷阱,认为它们永远没有用处。这正是这个问题的核心所在。但是我不能通过标准java类访问servlet上下文,在中传递引用首先会破坏依赖注入框架的目的?它是通过调用静态方法实现的吗?