Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用spring ApplicationContext时的性能问题_Java_Spring_Performance - Fatal编程技术网

Java 使用spring ApplicationContext时的性能问题

Java 使用spring ApplicationContext时的性能问题,java,spring,performance,Java,Spring,Performance,我使用Spring创建表单,并在用户单击菜单时自动在布局区域中显示它们: ApplicationContext ac = new AnnotationConfigApplicationContext("package"); AbstractComponent form = (AbstractComponent)ac.getBean(formName); layout.addComponent( form ); 一切都很好,问题是,有几百个表单,所以当用户点击菜单时,加载表单几乎需

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

ApplicationContext ac = new AnnotationConfigApplicationContext("package");
AbstractComponent form = (AbstractComponent)ac.getBean(formName);       
layout.addComponent( form );
一切都很好,问题是,有几百个表单,所以当用户点击菜单时,加载表单几乎需要8秒钟。问题是,如果我理解得很好,bean容器实例化了所有表单

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


提前感谢

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

公共类FormLoader{ 静态应用程序上下文ac=null

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

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

    }
}

在用户进行任何单击之前预加载上下文是否有效?然后在用户单击时,应用程序只需在已实例化的上下文中找到一个表单,而不必实例化整个上下文。感谢dopamint,是的,我应用了单例模式,它解决了性能问题。有关更多信息,请参阅我的答案