java - 使用 spring Application Context 时的性能问题

标签 java spring performance

我正在使用 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/

相关文章:

java - java中ArrayList的for循环

java - "generic"用例的 JAXB 性能不佳 - 更好的设计模式?

java - spring mvc 中的 org.springframework.dao.QueryTimeoutException

java - Spring Boot - 使用 ResourceLoader 读取文本文件

java - 为什么我的Java程序启动后性能会明显下降?

performance - 在集群键上使用 IN 子句的 Cassandra 性能

java - 使用 List 更新 SQL 数据库 - Java 和 MyBatis

java - 有什么理由不使用 resource.getInputStream() 吗?

java - Spring Boot 的外部库文件夹

java - 限制所有类的 Jackson 序列化/反序列化深度