Spring Boot Vaadin

18.07.2016

Spring Boot - Vaadin

Hier wird gezeigt, wie man Vaadin in eine Spring Boot Applikation integriert. Dies ist keine Einführung in Vaadin. Es soll nur an einem kleinen Beispiel beschrieben werden, wie einfach es ist das Vaadin-Framework in einer Spring Boot Applikation zu verwenden, um eine grafische Oberfläche für einen Microservice anzubieten.

Spring Boot Applikation erstellen

Los geht es auf der Seite start.spring.io. Wo Vaadin ausgewählt wird, um anschliessend das Projekt-Template mit Generate Project zu erstellen.

Das Template wird anschliessend in einer IDE geöffnet und die Klasse ItemUI ergänzt.

package org.hameister;

import com.vaadin.annotations.Theme;
import com.vaadin.data.util.BeanContainer;
import com.vaadin.data.util.BeanItemContainer;
import com.vaadin.server.VaadinRequest;
import com.vaadin.spring.annotation.SpringUI;
import com.vaadin.ui.Component;
import com.vaadin.ui.Table;
import com.vaadin.ui.UI;

import java.util.Arrays;
import java.util.List;
import java.util.Random;

@SpringUI(path = "ui")
@Theme("valo")
public class ItemUI extends UI {

    @Override
    protected void init(VaadinRequest vaadinRequest) {
        Table table = new Table();

        BeanItemContainer items = new BeanItemContainer<Item>(Item.class);


        Random r= new Random();
        for (int i = 0 ; i<100;i++) {
            items.addBean(new Item((long)i, "Test "+Math.abs(r.nextInt())));
        }

        table.setContainerDataSource(items);

        table.setSizeFull();
        setContent(table);

    }



    public class Item {

        Long id;
        String name;

        public Item(Long id, String name) {
            this.id = id;
            this.name = name;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }


        public Long getId() {
            return id;
        }

        public void setId(Long id) {
            this.id = id;
        }
    }

}

Wichtig ist in der Klasse die Annotation @SpringUI mit der festgelegt wird, unter welcher URL die grafische Oberfläche zu erreichen ist.

Mit der Annotation @Theme("valo") wird das Aussehen beeinflusst. Bei valo Händel es sich um das Standard-Theme. Wobei es möglich ist mit CSS/Sass ein eigenes Theme zu erstellen und zu verwenden.

Die Klasse ItemUI implementiert die Methode init(VaadinRequest vaadinRequest) der abstrakten Klasse UI.

In der Methode wird ein Objekt vom Typ com.vaadin.ui.Table erstellt und über einen BeanItemContainer mit Objekten vom Typ Item gefüllt.

Nach dem Start der Spring Boot Applikation sollte im Browser folgende Tabelle zu sehen sein, wenn man die URL http://localhost:8080/ui aufruft.