【发布时间】:2011-01-21 04:12:45
【问题描述】:
我想将一些数据注入静态类字段,这些字段是从大量 XML 文件生成的。
class Foo {
...
static MetaData xxx;
static MetaData yyy;
}
注入很简单,找到Foo.properties,解析xxx,yyy属性,然后构造MetaData实例。
我不确定 IoC 容器是否有助于这项任务,但似乎没有。
因为,Foo 可能被 IoC 容器未加载的类使用。
我的想法是,修改上下文类加载器,添加一些基于反射的特定类初始化代码。
有什么想法吗?
编辑 有很多 IoC 容器,我猜其中一些可能支持初始化扩展。
【问题讨论】:
-
Because, the Foo maybe used by classes which are not loaded by IoC container.这可能没问题,但 IoC 通常需要一些配置/注释,这可能是。你不能不修改ClassLoader,只需找到所有类或属性文件,调用Class.forName并进行一些反思吗?实际上,如果可能的话,我宁愿通过创建 Map> 来避免这一切。 -
不,去掉 Class.forName() 是设计目的。不会有Map
,解析/构造过程非常快,而且里面的MetaData是弱引用,减少内存占用。 -
为什么懒惰模式下不能初始化xxx、yyy?
标签: java ioc-container classloader