使用spring ApplicationContext

时间:2016-12-22 17:30:50

标签: java spring performance

当用户点击菜单时,我使用Spring创建表单并自动在布局区域中显示它们:

ApplicationContext ac = new AnnotationConfigApplicationContext("package");
AbstractComponent form = (AbstractComponent)ac.getBean(formName);       
layout.addComponent( form );

一切正常,问题是,有几百种表单,所以当用户点击菜单时,它持续差不多8秒钟来加载表单。问题是,如果我理解的话,bean容器会立即显示所有形式?

有没有办法提高性能,我正确使用ApplicationContext

提前致谢

1 个答案:

答案 0 :(得分:1)

好的,问题是由于新手错误造成的。当用户单击表单时,负责创建ApplicationContext的方法每次都创建一个新的ApplicationContext。因此应用Singleton模式解决了问题:

公共类FormLoader {         static ApplicationContext ac = null;

    public FormLoader() {
        if( ac == null ) {
            ac = new AnnotationConfigApplicationContext("package");
        }
    }

    public void loadForm( ... ) {
        AbstractComponent form = (AbstractComponent)ac.getBean(nombreForm);
        layout.addComponent( form );

    }
}