Directory

Vaadin CDI - Vaadin Add-on Directory

Contexts and Dependency Injection for Vaadin Vaadin CDI - Vaadin Add-on Directory
This add-on permits the use of primary CDI (JSR-299) features such as dependency injection, CDI events, etc. It also defines a new CDI scope for UIs and automatically configures a servlet for CDI if no Vaadin servlets are defined. ## Compatibility | Vaadin CDI | Vaadin version | | ------------- |:-------------:| | 1.x | 7.x | | 2.x | 8.0..8.1 | | 3.x | 8.2.. | | 10.0.x | 10 | | 11.0.x | 14 | ## Getting started ### Startup If you do not customize Vaadin Servlet in your web.xml, a CDI enabled Vaadin servlet is deployed automatically. As UI class CdiUI is configured. If you need a custom UI class, you have to extend this class. It is not a CDI contextual instance but injects work. Otherwise, you can customize CdiVaadinServlet just like VaadinServlet. ## Component instantiation and CDI Vaadin triggered instantiation happens in a CDI aware Vaadin Instantiator implementation. Components created by this API: - @Route, RouteLayout, HasErrorParameter components - component fields injected by @Id to polymer templates By default, instantiator looks up the CDI bean by type ( component class ) and gets a contextual reference from BeanManager. All the CDI features are usable like observer, interceptor, decorator. When type is not found as a CDI bean ( for example ambiguous, or does not have a no-arg public constructor ), instantiation falls back to the default Vaadin behavior. On success, dependency injection is performed. Injects work, but other CDI features not. It is not a contextual instance. ## Vaadin Contexts In addition to standard CDI contexts, the CDI add-on introduces some new contexts. Read more about the supported scopes in [Vaadin Docs](https://vaadin.com/docs/flow/cdi/tutorial-cdi-contexts.html) ## Services Some Vaadin service interfaces can be implemented as a CDI bean. - I18NProvider - Instantiator - SystemMessagesProvider - ErrorHandler Beans have to be qualified by @VaadinServiceEnabled to be picked up automatically. Example code is available in [Vaadin Docs](https://vaadin.com/docs/flow/cdi/tutorial-cdi-service-beans.html) ## Vaadin Events Following events fired as a CDI event: - ServiceInitEvent - PollEvent - BeforeEnterEvent - BeforeLeaveEvent - AfterNavigationEvent - UIInitEvent - SessionInitEvent - SessionDestroyEvent - ServiceDestroyEvent See example code in [Vaadin Docs](https://vaadin.com/docs/flow/cdi/tutorial-cdi-events.html)