Vaadin + Spring Boot with example

Today, we will go through how to develop web application using the Vaadin framework
Vaadin is the only framework that allows you to write UI 100% in Java without getting bogged down in JS, HTML, and CSS. If you prefer, you can also create layouts in HTML or with a visual designer. Vaadin apps run on the server and handle all communication automatically and securely.
Following technologies stack being used:
  • Spring Boot 2.1.1.RELEASE
  • Spring 5.1.3.RELEASE 
  • Maven 3
  • JDK 1.8
  • Eclipse Oxygen
  • Vaadin

1)Project Structure

2)Maven/Dependency Management [pom.xml] 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="" xmlns:xsi=""
 <description>Demo project for Springboot-vaadin</description>
  <relativePath /> <!-- lookup parent from repository -->

3)User Class

package com.knowledgefactory;
public class User {
 private int id;
 private String name;
 private String mail;
 public String getName() {
  return name;
 public void setName(String name) { = name;
 public String getMail() {
  return mail;
 public void setMail(String mail) {
  this.mail = mail;
 public int getId() {
  return id;
 public void setId(int id) { = id;
 public User(int id, String name, String mail) {
  super(); = id; = name;
  this.mail = mail;

4)UserService Class

package com.knowledgefactory;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Component;
public class UserService {
 public List<User> findAll() {
  User user1 = new User(1, "KnowledgeFactory", "");
  User user2 = new User(2, "KnowledgeFactoryduplicate", "");
  List<User> users = new ArrayList<>();
  return users;

5)VaadinUI Class

package com.knowledgefactory;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import com.vaadin.server.VaadinRequest;
import com.vaadin.spring.annotation.SpringUI;
import com.vaadin.ui.Button;
import com.vaadin.ui.Grid;
import com.vaadin.ui.TextField;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;
public class VaadinUI extends UI {
 private static final long serialVersionUID = -7896040466986437670L;
 private UserService service;
 private Binder<User> binder = new Binder<>(User.class);
 private Grid<User> grid = new Grid<User>(User.class);
 private TextField name = new TextField("Name");
 private TextField mail = new TextField("Mail");
 private Button save = new Button("Save");
 protected void init(VaadinRequest request) {
  grid.setColumns("name", "mail");
  VerticalLayout layout = new VerticalLayout(grid, name, mail, save);
 private void updateGrid() {
  List<User> users = service.findAll();
 private void setFormVisible(boolean visible) {

6)Spring Boot

package com.knowledgefactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
public class DemoApplication {
 public static void main(String[] args) {, args);