2016-12-22 2 views
2

Я использую Spring для создания форм и их отображений в области макета автоматически, когда пользователь щелкает на меню:вопросов Performace при использовании пружины ApplicationContext

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

Все работает отлично, проблемы заключаются в том, есть несколько сотен форм, поэтому, когда пользователь нажимает на меню, он длится почти 8 секунд, чтобы загрузить форму. Дело в том, что, если я хорошо понимаю, контейнер контейнера заполнил все формы?

Есть ли способ увеличить производительность, я использую правильно ApplicationContext?

Заранее спасибо

+0

Возможно ли предварительная загрузка контекста до того, как пользователь выполнит какие-либо щелчки? Затем в приложении с кликом пользователя должно будет только ** найти ** форму в уже созданном контексте, чтобы не создавать ** весь контекст. –

+0

Спасибо dopamint, да, я применил шаблон Singleton, и он решил проблему производительности. См. Мой ответ для дальнейшей информации –

ответ

1

Ok, проблема была из-за ошибки новичка. Когда пользователь щелкнул форму, метод, отвечающий за создание 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); 

    } 
} 
Смежные вопросы