mirror of
https://github.com/vaadin/framework.git
synced 2024-07-27 20:20:26 +02:00
75 lines
3.0 KiB
Plaintext
75 lines
3.0 KiB
Plaintext
---
|
||
title: Vaadin CDI
|
||
order: 47
|
||
layout: page
|
||
---
|
||
|
||
[[vaadin-cdi]]
|
||
Vaadin CDI
|
||
----------
|
||
|
||
During these tutorials we will be solving a number of common problems
|
||
when using the https://vaadin.com/directory/component/vaadin-cdi[Vaadin CDI plugin].
|
||
The principal question we will be addressing is "How do I gain access to
|
||
CDI features in a Vaadin project?"
|
||
|
||
At the end of these tutorials you will have learned how to
|
||
|
||
1. Set up a Vaadin CDI project +
|
||
2. Create UI's and Views with Vaadin CDI +
|
||
3. Use injection with standard and Vaadin CDI scopes +
|
||
4. Pass events between various parts of your application +
|
||
5. Set up access control for your application
|
||
|
||
We will assume familiarity with Vaadin 7 and common CDI concepts. As a
|
||
reference development environment we'll be using
|
||
http://www.eclipse.org/downloads/[Eclipse] Luna with the
|
||
http://marketplace.eclipse.org/content/vaadin-plugin-eclipse[Vaadin
|
||
plugin], Maven and http://tomee.apache.org/apache-tomee.html[TomEE].
|
||
Installation and configuration of said environment is outside the scope
|
||
of these tutorials.
|
||
|
||
The tutorials will build off one another, each starting where the
|
||
previous left off. If you wish to jump in at a later point feel free to
|
||
get a copy of the project here: https://github.com/Vaadin/cdi-tutorial.
|
||
The repository has tags for each tutorial's starting point, called
|
||
tutorial-1 to tutorial-5.
|
||
|
||
[[vaadin-cdi-for-the-impatient]]
|
||
Vaadin CDI for the impatient
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
If you are eager to get started right away without following the
|
||
tutorial, feel free to do so. There are still some *practical details*
|
||
that are good to keep in mind if you're not familiar with
|
||
https://vaadin.com/directory/component/vaadin-cdi[Vaadin CDI features] or CDI in
|
||
general.
|
||
|
||
* *Use http://tomee.apache.org/downloads.html[TomEE Web Profile]* or
|
||
some other JavaEE 6+ *server*. Tomcat or Jetty won't work out of the
|
||
box.
|
||
** *Add the http://mvnrepository.com/artifact/javax/javaee-api[JavaEE
|
||
API] to your classpath* if e.g. the @Inject annotation can't be
|
||
found. Depending on how your project is configured, this might not be
|
||
necessary and might in some cases even cause conflicts. +
|
||
* *Objects must be injected* and managed by the CDI implementation in
|
||
order to use CDI features.
|
||
** *Use @Inject on an instance field* to make the CDI implementation
|
||
inject a managed instance of the corresponding type.
|
||
** *Annotate your UI class with @CDIUI("")* to let Vaadin CDI know that
|
||
it should inject and use instances of that class when the application is
|
||
opened in the browser.
|
||
** *Remove any existing VaadinServlet* from your project (look for
|
||
servlets with @WebServlet or defined in web.xml). Vaadin CDI has its own
|
||
VaadinCDIServlet that will be deployed automatically as long as no other
|
||
Vaadin servlets are present.
|
||
** *Initialize objects in a method annotated with @PostConstruct.* CDI
|
||
features such as @Inject are not yet functional when the constructor is
|
||
run.
|
||
|
||
[[related-pages]]
|
||
Related pages
|
||
~~~~~~~~~~~~~
|
||
|
||
<<IIInjectionAndScopes#ii-injection-and-scopes,"II - Injection and scopes">>
|