假设这是我从 DB/XML 读取的配置数据对象:
class ConfigurationClass{
//some configurations
public String getString(){
}
}
现在这是使用此配置对象的类
class ConfigurationUser implements Reloadable{
private ConfigurationClass configuration;
//some extra logic required for making object ready to use
public void init(){
// some new object is created based on configuration
SomeObject obj = new SomeObject(configuration.getString());
//register to configuration manager
}
@Override
public void reload(){
//does whole reloading stuff
//creates a new instance of configuration class and reads new configuration which is not appropriate
}
}
现在,当我必须重新加载配置时,假设我创建了一个新实例ConfigurationClass
并将其注入到ConfigurationUser
类中。但我还必须重新初始化对象,以便它可以创建新的配置相关对象。
这是一个合适的设计还是有更好的方法?我曾考虑使用 Spring 或 Google Juice 进行 DI,但我必须再次向配置用户类提供回调,该配置已重新加载。
我是使用 IoC 容器的新手,所以不知道是否可能。需要在实时服务器应用程序中使用它,因此必须严格控制垃圾产生和性能。
当前解决方案:
public interface Reloadable{
public void reload();
}
我有一个配置管理器,我向其中注册了所有配置用户实例,当重新加载完成时,管理器只需调用reload
它并读取新配置并重新初始化所有依赖对象。
任何帮助,将不胜感激。