我正在使用 Spring 创建表单并在用户单击菜单时自动将它们显示在布局区域中:
ApplicationContext ac = new AnnotationConfigApplicationContext("package");
AbstractComponent form = (AbstractComponent)ac.getBean(formName);
layout.addComponent( form );
一切正常,问题是,有数百个表单,因此当用户单击菜单时,加载表单的时间将近 8 秒。问题是,如果我理解得很好的话,bean 容器实例化了所有的表单?
有什么方法可以提高性能,我正确使用了 ApplicationContext
?
提前致谢
最佳答案
好的,问题是由于新手错误造成的。当用户单击表单时,负责创建 ApplicationContext 的方法每次都会创建一个新的 ApplicationContext。所以应用单例模式解决了问题:
公共(public)类 FormLoader{ 静态 ApplicationContext ac = null;
public FormLoader() {
if( ac == null ) {
ac = new AnnotationConfigApplicationContext("package");
}
}
public void loadForm( ... ) {
AbstractComponent form = (AbstractComponent)ac.getBean(nombreForm);
layout.addComponent( form );
}
}
关于java - 使用 spring Application Context 时的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41288787/