Directory

← Back

Vaadin CDI

Contexts and Dependency Injection for Vaadin

Author

Rating

Popularity

100+

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

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

Vaadin Events

Following events fired as a CDI event:

  • ServiceInitEvent
  • PollEvent
  • BeforeEnterEvent
  • BeforeLeaveEvent
  • AfterNavigationEvent
  • UIInitEvent
  • SessionInitEvent
  • SessionDestroyEvent
  • ServiceDestroyEvent

See example code in Vaadin Docs

Compatibility

(Loading compatibility data...)

Was this helpful? Need more help?
Leave a comment or a question below. You can also join the chat on Discord or ask questions on StackOverflow.

Version

Compatible with Vaadin Framework 8.0. Fix for UI cleanup within session.

Released
2017-02-21
Maturity
STABLE
License
Apache License 2.0

Compatibility

Framework
Vaadin 8.0+
Vaadin 14+ in 11.0.0
Vaadin 10+ in 10.0.0
Vaadin 8.2+ in 3.0.1
Vaadin 7.7+ in 1.0.4
Vaadin 8.1+ in 3.0.0.alpha1
Vaadin 7.3+ in 1.0.5
Vaadin 7.2+ in 1.0.0.alpha3
Vaadin 7.0+ in 1.0.0.alpha1
Browser
Browser Independent

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)
Online