Using CDI with Vaadin

The Vaadin CDI add-on allows you to use Vaadin with CDI.

Tutorial

A tutorial application which showcases the basic usage of a Vaadin CDI Application is available at https://github.com/vaadin/flow-cdi-tutorial. You can use this application example to test the different concepts and features presented in the documentation.

Starting a Project

For starting a new project with CDI and Vaadin, you can get a project base for Vaadin and CDI from [vaadin.com/start. It is a project template with the necessary configuration and dependencies included for starting building you own application. This starter is also available for cloning from Github.

Adding Dependencies

The vaadin-cdi add-on should be packaged in your appplication and deployed to an application server that is compliant with Java EE 7 (or newer).

If you are a vaadin-platform user, add the following dependencies in your pom.xml.

For example: .pom.xml

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.vaadin</groupId>
            <artifactId>vaadin-bom</artifactId>
            <version>${vaadin.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
         <groupId>com.vaadin</groupId>
         <artifactId>vaadin-cdi</artifactId>
    </dependency>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>

Vaadin Version Compatibility

The version for vaadin-cdi is managed by vaadin-bom. For Vaadin 14, the CDI add-on version is 11.0.

You need the CDI API version 1.2 and a provided implementation. In practice, because other Java EE/Jakarta EE features are used together with CDI, the simplest way to ensure compatibility is to use a Java EE 7 (or newer) container.

Configuring the Vaadin CDI Add-on

There are no specific CDI configuration options.

An instance of the CDI-enabled Vaadin servlet, com.vaadin.cdi.CdiVaadinServlet, is deployed automatically, provided you do not setup a Vaadin servlet in your web.xml or use the @WebServlet annotation. You can also customize CdiVaadinServlet to suit your setup.

Note
See Configuration Properties for more information about Vaadin servlet configuration.