Using Vaadin with Spring MVC
In this section we cover how to use Vaadin with Spring MVC. Spring MVC is the original Spring web framework built on the Servlet API.
Note | See Using Vaadin with Spring Boot to use Vaadin with Spring Boot. |
Registering the Vaadin Servlet
To use Vaadin in your Spring web application you need to register the Vaadin SpringServlet as a dispatcher servlet.
Example: Registering the SpringServlet as a dispatcher servlet.
public abstract class ExampleWebAppInitializer
implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext)
throws ServletException {
AnnotationConfigWebApplicationContext context =
new AnnotationConfigWebApplicationContext();
registerConfiguration(context);
servletContext.addListener(
new ContextLoaderListener(context));
ServletRegistration.Dynamic registration =
servletContext.addServlet("dispatcher",
new SpringServlet(context, true));
registration.setLoadOnStartup(1);
registration.addMapping("/*");
}
private void registerConfiguration(
AnnotationConfigWebApplicationContext context) {
// register your configuration classes here
}
}Registering Vaadin Scopes
To use Vaadin Spring scopes you need to register the VaadinScopesConfig configuration class. As an alternative, you can add the @EnableVaadin annotation to your configuration class to import VaadinScopesConfig.
The Vaadin Spring add-on provides the VaadinMVCWebAppInitializer class that is an abstract subclass of the WebApplicationInitializer class. You can extend this class and provide your configuration classes by implementing the getConfigurationClasses() method.
Example: Extending VaadinMVCWebAppInitializer and implementing the getConfigurationClasses() method.
public class SampleWebAppInitializer
extends VaadinMVCWebAppInitializer {
@Override
protected Collection<Class<?>>
getConfigurationClasses() {
return Collections.singletonList(
SampleConfiguration.class);
}
}@Configuration
@ComponentScan
public class SampleConfiguration {
}This registers
VaadinScopesConfigandVaadinServletConfigurationautomatically.
Handling URLs
To handle URLs, you need at least one Vaadin component, annotated with @Route. See Add Vaadin view to Spring Boot application for an @Route annotation example.
Declaring Dependencies
To use your Spring web application, you need to declare dependencies in your pom.xml file to vaadin-bom and spring-web as follows:
<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-spring</artifactId>
</dependency>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>