Vaadin CDI - Vaadin Add-on Directory
Contexts and Dependency Injection for VaadinThis 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)