4.2.8. AppContext
AppContext is a system class, which stores references to certain common components for each application block in its static fields:
-  ApplicationContextof Spring Framework.
-  Set of application properties loaded from app.propertiesfiles.
-  ThreadLocalvariable, storing SecurityContext instances.
-  Collection of application lifecycle listeners ( AppContext.Listener).
When the application is started, AppContext is initialized using loader classes, specific for each application block:
-  Middleware loader – AppContextLoader
-  Web Client loader – WebAppContextLoader
-  Web Portal loader – PortalAppContextLoader
-  Desktop Client loader – DesktopAppContextLoader
AppContext can be used in the application code for the following tasks:
-  Registering listeners, triggered after full initialization and before termination of the application, for example: 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"); } });At the moment of applicationStarted()call:-  All the beans are fully initialized and their @PostConstructmethods are executed.
-  Static AppBeans.get()methods can be used for obtaining beans.
-  The AppContext.isStarted()method returnstrue.
-  The AppContext.isReady()method returnsfalse.
-  If cuba.automaticDatabaseUpdate application property is enabled, all database update scripts are successfully executed (in the Middleware block). 
 At the moment of applicationStopped()call:-  All the beans are operational and can be obtained via AppBeans.get()methods.
-  AppContext.isStarted()method returnsfalse.
-  The AppContext.isReady()method returnsfalse.
 A real example of using AppContext.Listenercan be found in Running Code at Application Start.
-  
-  Getting the application property values, stored in app.propertiesfiles in case they are not available through configuration interfaces.
-  Passing SecurityContextto new execution threads, see User Authentication.