SpringBoot application/@SpringUI in Vaadin version 11 not available

I’m switching from version 8 to 11. Looks like @SpringUI annotation is not available any more and the class that extends UI not visible to SpringBoot application. What is the equivalent to @SpringUI in version 11 ?
Thanks you

I think the correct scope in V10 and V11 is @UIScope.

Bellow, there is a tutorial about spring scopes:

You don’t need the @SpringUI annotation any more, all you need is a @Route annotation.

In the full stack app “BackeryUI” example there is a property “server.servlet.context-parameters.UI=com.example.test.ui.BakeryUI”. This points to a UI class. It is used to check every request for a UserLogin and if it isn’t set, reroute to the Login page.

This is similar to the Simple App example (which uses Jetty/WAR).

I’d like to switch the Simple App example from Jetty to SpringBoot using the idea from the BackeryUI example. In that case, I need to set the server.servlet.context-parameters to my UI class.

But this class isn’t part of the SpringContext - it is “new’t” somewhere outside Spring. So I cannot inject with @Autowired a UserService. Before Vaadin Flow it was possible to use @SpringUI to get into the SpringContext. I’m not sure if UIScope helps here.

I didn’t find a solution to configure the behaviour of Vaadin (UI) within a SpringContext. I didn’t find an example.

I had the same problem and solved it by using a Servlet with a SpringVaadinServletService, in order to let Spring instantiate the view, so that it can actually autowire services.

package my.company;

import com.vaadin.flow.function.DeploymentConfiguration;
import com.vaadin.flow.server.ServiceException;
import com.vaadin.flow.server.VaadinServlet;
import com.vaadin.flow.server.VaadinServletService;
import com.vaadin.flow.spring.SpringVaadinServletService;

public class MyServlet extends VaadinServlet {

  protected VaadinServletService createServletService(DeploymentConfiguration deploymentConfiguration) throws ServiceException {
    VaadinServletService service = new SpringVaadinServletService(this, deploymentConfiguration, ApplicationContextProvider.getApplicationContext());
    return service;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

public class ApplicationContextProvider implements ApplicationContextAware {

  private static ApplicationContext context;

  public static ApplicationContext getApplicationContext() {
    return context;

  private static EntityManager em;

  public void setApplicationContext(ApplicationContext ac) throws BeansException {
    context = ac;

  public static EntityManager getEntityManager() {
    if (em == null) {
      EntityManagerFactory manager = ApplicationContextProvider.getApplicationContext().getBean("entityManagerFactory", EntityManagerFactory.class);
      em = manager.createEntityManager();
    return em;

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="3.0"


		<servlet-name>My Vaadin Application Servlet</servlet-name>

		<servlet-name>My Vaadin Application Servlet</servlet-name>