Skip to content

Governator Phases

Randgalt edited this page Oct 26, 2012 · 15 revisions

Guice users are familiar with the “binding phase” where Guice calls your modules to register bindings. You then create the Injector as a second phase. Governator introduces several new phases. The timeline is like this:

  1. Classpath scanning phase
    • Specified packages are scanned for Governator annotations
    • The classes are stored for later phases
  2. Bootstrapping phase
    • The Application bootstrap module (if specified) is invoked
    • Auto bind ConfigurationProviders are bound
    • The LifecycleManager is created via the bootstrap Injector
  3. Main Injector phase
    • Application provided modules are added
    • AutoBindSingletons are bound as eager singletons
    • AutoBind arguments are bound via the corresponding AutoBindProvider
    • The main Injector is created
    • As each object is created by Guice:
      1. PreConfiguration methods are called
      2. Configuration values are set
      3. PostConstruct methods are called
  4. Start phase
    • The application calls LifecycleManager.start()
    • Bean/field validation is done
    • Any WarmUp methods are executed via Fork/Join

Objects that are injected after LifecycleManager.start() get passed through the Lifecycle: i.e. PreConfiguration, Configuration and PostConstruct methods are called. Additionally, bean/field validation and warming up are done immediately.


When the application calls LifecycleManager.close() …

Each object that is being actively managed is shutdown by calling its PreDestroy methods (if any).