Interface GuiceyBundle

  • All Known Implementing Classes:
    CoreInstallersBundle, HK2DebugBundle, UniqueGuiceyBundle, WebInstallersBundle

    public interface GuiceyBundle
    Guicey bundle is an enhancement of dropwizard bundles (ConfiguredBundle). It allows everything that dropwizard bundles can plus guicey specific features and so assumed to be used instead of dropwizard bundles. But it does not mean that other dropwizard bundles can't be used: both bundle types share the same lifecycle, so you can register dropwizard bundles from within guicey bundle (which is very important for existing bundles re-using).

    Like dropwizard bundles, guicey bundles contains two lifecycle phases:

    • initialization - when all bundles (dropwizard and guicey) must be configured
    • run - when dropwizard configuration and environment become available and some additional guicey configurations may be performed

    Extensions and guice modules may be registered (or disabled) in both phases (because guice is not yet started for both), but installers are registered only in initialization phase because they are used during classpath scan, performed on dropwizard initialization.

    Bundles are extremely useful when autoscan is not used in order to group required extensions installation.

    Bundle should be registered into GuiceBundle builder.

    Bundles could be installed automatically with bundle lookups mechanism GuiceyBundleLookup. For example, it could be service loader based lookup which automatically installs bundle when it appears in classpath.

    Multiple instances of the same bundle could be registered (like with dropwizard bundles). But guicey duplicates mechanism will consider equal bundles as duplicate (and register only one). So in order to grant bundle uniqueness simply properly implement equals method or use UniqueGuiceyBundle. See GuiceBundle.Builder.duplicateConfigDetector( ru.vyarus.dropwizard.guice.module.context.unique.DuplicateConfigDetector) for duplicates detection mechanism info.

    Since:
    01.08.2015