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
в новые потоки выполнения, см. Аутентификация пользователей.