Spring CommandLineRunner

CommandLineRunner je funkční rozhraní s metodou void run(String... args) throws Exception. V této metodě můžeme uvést vše, co chceme aby se stalo a startu aplikace. Jednou z možností jak vytvořit CommandLineRunner je vlastní třída s anotací @Configuration a následně metoda s anotací @Bean vracející CommandLineRunner

@Configuration
class AppConfig {

    @Bean
    fun init(bookRepository: BookRepository): CommandLineRunner {
        return CommandLineRunner {
            bookRepository.save(BookEntity(title = "Cyber Leviathan"))
            bookRepository.save(BookEntity(title = "Last Hunt"))
        }
    }
}

Jiný způsob je extendovat CommandLineRunner a implementovat metodu run()

@SpringBootApplication
class SpringData2Application : CommandLineRunner {
	override fun run(vararg args: String?) {
		println("Running ...")
	}
}

fun main(args: Array<String>) {
	runApplication<SpringData2Application>(*args)
}

 

Weblux swagger pomocí springfox

Swagger je nástroj (knihovna), který umožňuje dokumentovat REST endpointy vaší aplikace. Dobré je to například pro vývoj, kdy konzument (např. vývojář frontendu) ví, jaké jsou aktuálně k dispozici endpointy, jaké mají vstupy a jaké objekty vrací. Jak zprovoznit swagger v projektu, který používá WebFlux a Spring Boot ukáži v tomto příspěvku.

Pokud máte projekt a používáte pro restové služby framework WebFlux a Spring Boot, je zprovoznění Swaggeru jednoduché. Stačí přidat následující závislosti (používám Gradle a Kotlin):

implementation("io.springfox:springfox-swagger2:3.0.0-SNAPSHOT")
implementation("io.springfox:springfox-swagger-ui:3.0.0-SNAPSHOT")
implementation("io.springfox:springfox-spring-webflux:3.0.0-SNAPSHOT")

a vytvořit konfigurační třídu pro Swagger:

Číst dálWeblux swagger pomocí springfox

Spring Data a Liquibase

Liquibase umožňuje hlídat změny v databázi. Každá změna (blok změn) má svůj vlastní changeset. Liquibase si vytváří dvě vlastní tabulky: databasechnagelog, kde jsou uloženy provedené changesety a databasechangeloglock, která slouží pro zamykání (řeší případ přístupu, kdy více vývojářů dělá změny v databázi současně). Může se stát, že pokud Liquibase neskončí korektně a zůstane zámek. Pak je potřeba locked nastavit na false manuálně.

Číst dálSpring Data a Liquibase

Vytvoření tabulek pro Spring Batch

Spring Batch používá 6 tabulek, pro ukládání dat:

batch_job_execution
batch_job_execution_context
batch_job_execution_params
batch_job_instance
batch_step_execution
batch_step_execution_context

Tyto tabulky vytvoříte přidáním následujícího řádku do souboru application.properties:

spring.batch.initialize-schema=always

Zdroj: stackoverflow.com/…-auto-create-batch-table

 

Změna verze Javy z 8 na 11

Nedávno jsem prováděl změny verze Javy na projektu, který používá Spring Boot. Měnil jsem verzi Javy z verze 8 na verzi 11. Nebylo to až tak strašné, jak jsem čekal (spíše naopak), přesto se ale některé komplikace objevily. V tomto příspěvku budu postupovat od chyby k chybě, tak jak se u mě objevovaly.

Číst dálZměna verze Javy z 8 na 11

Spring Boot JPA: vytváření dotazů

Vytváření dotazů ve Spring Boot JPA je jednoduché. Nejdříve je třeba si vytvořit objekty, které představují tabulky a jejich sloupce. V tomto příkladu si vytvoříme objekt User.

@Entity(name="t_user")
public class User implements Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private long id;
	private String email;
	private String password;

        // getry a setry
}

Pomocí anotace @Entity říkám, že tato třída má představovat tabulku v databázi, name="t_user" definuje, že tabulka v databázi se bude jmenovat t_user. Anotací @Id označuji private long id jako primární klíč tabulky a @GeneratedValue určuje jak se má id generovat.

Číst dálSpring Boot JPA: vytváření dotazů

Vytvoření nového Spring Vaadin projektu

Nový Spring Boot projekt s Vaadinem lze vytvořit několika způsoby.

Lze použít web start.spring.io. Jak na to můžete vidět v těchto příspěvcích: Spring Boot JDBC projekt, Spring Boot a Spring Batch vytvoření projektu.

Můžete použít vývojové prostředí STS (založeno na Eclipse) a pomocí File -> New -> Spring Starter Project si nechat projekt vygenerovat. Je to podobné předchozímu způsobu, jen není třeba vygenerovaný zip rozbalovat a importovat do IDE.

Další způsob je použít generátor na stránkách Vaadinu: vaadin.com/start/latest/project-base-spring. Pro stažení vygenerovaného projektu je třeba být přihlášen.

Číst dálVytvoření nového Spring Vaadin projektu

Vaadin a Spring Boot – nový projekt

Vytvořením nového projektu se Spring Boot a Vaadinem jsem se zabýval již v tomto příspěvku. Vaadin jde ale mílovými kroku kupředu a to co platilo pro Vaadin 8 již pro Vaadin 10 neplatí. Pokud si projekt necháte vygenerevat z STS (File -> New -> Spring Starter Project) a spustíte jej dostanete tento výpis (na localhost:8080):

Číst dálVaadin a Spring Boot – nový projekt