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
см. в Раздел 5.8.4, «Выполнение кода на старте приложения». -
-
Получения значений свойств приложения, хранимых в файлах
app.properties
, если они недоступны через конфигурационные интерфейсы. -
Передачи
SecurityContext
в новые потоки выполнения, см. Раздел 4.2.10, «Аутентификация пользователей».
Для получения ссылок на Spring-бины используйте инжекцию или статические методы класса AppBeans
.
Использование AppContext.getApplicationContext().getBean()
не рекомендуется.