4.2.8. AppContext
AppContext - системный класс, в статических полях которого хранятся ссылки на некоторые общие для любого блока приложения компоненты:
-  
ApplicationContextфреймворка Spring -  
Набор свойств приложения, загруженных из файлов
app.properties -  
ThreadLocalпеременная, хранящая экземплярыSecurityContext -  
Коллекция слушателей жизненного цикла приложения (
AppContext.Listener) 
AppContext инициализируется на запуске приложения классами-загрузчиками, специфичными для типа блока приложения:
-  
загрузчик Middleware -
AppContextLoader -  
загрузчик Web Client -
WebAppContextLoader -  
загрузчик Web Portal -
PortalAppContextLoader -  
загрузчик Desktop Client -
DesktopAppContextLoader 
AppContext может быть использован в прикладном коде для решения следующих задач:
-  
Регистрации слушателей, срабатывающих после полной инициализации и перед закрытием приложения, например:
AppContext.addListener(new AppContext.Listener() { @Override public void applicationStarted() { System.out.println("Application is ready"); } @Override public void applicationStopped() { System.out.println("Application is closing"); } });В момент вызова
applicationStarted():-  
Полностью инициализированы все бины, в том числе выполнены их методы
@PostConstruct. -  
Можно использовать статические методы получения бинов
AppBeans.get(). -  
Метод
AppContext.isStarted()возвращаетtrue. -  
Метод
AppContext.isReady()возвращаетfalse. -  
В блоке Middleware: если свойство приложения cuba.automaticDatabaseUpdate включено, все скрипты обновления БД успешно выполнены.
В момент вызова
applicationStopped(): -  
Все бины работоспособны и доступны через статические методы
AppBeans.get(). -  
Метод
AppContext.isStarted()возвращаетfalse. -  
Метод
AppContext.isReady()возвращаетfalse.Практический пример использования
AppContext.Listenerсм. в Выполнение кода на старте приложения. 
 -  
 -  
Получения значений свойств приложения, хранимых в файлах
app.properties, если они недоступны через конфигурационные интерфейсы. -  
Передачи
SecurityContextв новые потоки выполнения, см. Аутентификация пользователей.