$30 off During Our Annual Pro Sale. View Details »

JAX 2018 Spring Boot 2 - Hot Topics

JAX 2018 Spring Boot 2 - Hot Topics

Michael Simons

April 25, 2018
Tweet

More Decks by Michael Simons

Other Decks in Programming

Transcript

  1. Spring Boot 2:
    Hot topics
    Michael Plöd, @bitboss
    Michael Simons, @rotnroll666
    Mainz, 25. April 2018

    JAX 2018

    View Slide

  2. 2
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    @bitboss
    Michael Plöd

    Principal Consultant
    at INNOQ Deutschland GmbH
    • Interessiert an Software Architektur, aktuell mit Fokus
    auf Domain-driven Design
    • Spring Anwender seit 2004
    • Twitter: @bitboss

    View Slide

  3. 3
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    @rotnroll666
    Michael Simons

    Senior Consultant
    at INNOQ Deutschland GmbH
    • Erstes Spring Projekt 2009 (Spring 3)
    • Erstes Spring Boot Projekt Anfang 2014
    • Blog zu Java, Spring und Softwarearchitektur unter
    info.michael-simons.eu
    • Regt sich auf Twitter als @rotnroll666 über alles
    mögliche auf

    View Slide

  4. Spring Boot Versionierungsschema
    4
    • Kein Semantic-Versioning
    • {major}.{minor}.{micro}.{release_type}
    • major: Signifikante neue Funktionen, nicht unbedingt abwärtskompatibel
    • minor: Neue Funktionen, idR abwärtskompatibel
    • micro: Bugfixes, Verbesserungen
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666

    View Slide

  5. 5
    • 1.0 am 1. April 2014
    • Schneller Start für Entwicklung mit
    Spring
    • kein Code- oder
    Konfigurationsgenerator
    • Extern konfigurierbar
    • Einheitliches Komponenten-Modell
    • Eingebetteter Container
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    4 Jahre Spring Boot

    View Slide

  6. 5
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    4 Jahre Spring Boot
    • 1.1 am 10. Juni 2014
    • Metrics- und Health-Endpunkte
    • Datenbankmigrationen
    • Neue Starter
    • Custom Banner!!

    View Slide

  7. 5
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    4 Jahre Spring Boot
    • 1.2 am 11. Dezember 2014
    • Servlet 3.1
    • @SpringBootApplication
    • JTA-Transaktionen

    View Slide

  8. 5
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    4 Jahre Spring Boot
    • 1.3 am 16. November 2015
    • DevTools
    • Eigenständig ausführbare JARs
    • Größere Umbauten der Actuator
    Endpoints für Java 8

    View Slide

  9. 5
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    4 Jahre Spring Boot
    • 1.4 am 28. Juli 2016
    • Besseres Debugging (Failure-
    Analyse)
    • Hibernate 5
    • Test-Slices
    • banner.jpg

    View Slide

  10. 5
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    4 Jahre Spring Boot
    • 1.5 am 30. Januar 2017
    • Nativer Support für Kafka
    • Actuator-Erweiterungen für Cloud-
    Foundry

    View Slide

  11. 5
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    4 Jahre Spring Boot
    • 2.0 am 1. März 2018

    View Slide

  12. Themen
    6
    • Neue Grundlagen: Java 8, Spring 5 und aktualisierte Abhängigkeiten
    • Fokus auf reaktive Anwendungsentwicklung
    • Actuator 2.0
    • Spring Security 5
    • Spring Data
    • Todos
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666

    View Slide

  13. First things first


    DAS Enterprise Feature schlechthin!
    7
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666

    View Slide

  14. Animated banner
    8
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666

    View Slide

  15. Animated banner
    8
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666

    View Slide

  16. Java 8, Spring 5 und aktualisierte Abhängigkeiten
    9
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666

    View Slide

  17. Java 8
    10
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    @Configuration
    public class WebConfig extends WebMvcConfigurerAdapter {
    @Override
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
    super.configureContentNegotiation(configurer);
    configurer.favorParameter(true);
    }
    }
    • Type-Inferenz
    • Lambdas
    • Default-Methods für diverse Konfigurations-Interfaces,

    Adapter idR deprecated

    View Slide

  18. import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    @Configuration
    public class WebConfig implements WebMvcConfigurer {
    @Override
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
    configurer.favorParameter(true);
    }
    }
    Java 8
    10
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • Type-Inferenz
    • Lambdas
    • Default-Methods für diverse Konfigurations-Interfaces,

    Adapter idR deprecated

    View Slide

  19. Spring 5
    11
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • Nullsafe-Apis (@Nullable etc.)
    • Indizierter Component-Scan (über META-INF/spring.components)
    • spring-jcl
    • Massives Baseline-Upgrade
    • Tomcat 8.5+, Jetty 9.4,
    • Hibernate 5+
    • Depracted Klassen und Methoden wurden entfernt
    • Framework-Support wurde entfernt
    • u.a. Portlets, Velocity, Guava Cache

    View Slide

  20. Spring 5
    12
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • HTTP/2
    • Nativ mit Tomcat 9.x, Jetty 9.4 und Undertow 1.4+
    • Ja(va|karta) EE Servlet 4.0 mit Spring 5.1
    • HTTP/2 Server Push in Spring MVC mit
    PushBuilder

    View Slide

  21. Aktualisierte Abhängigkeiten mit Spring Boot 2
    13
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • Hibernate 5.2
    • Flyway 5
    • Spring Data Kay
    • Spring Security 5
    • Thymeleaf 3

    View Slide

  22. Fokus auf reaktive Anwendungsentwicklung
    14
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666

    View Slide

  23. Die große Reactive Story
    15
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • Wichtige Neuerung in Spring 5
    • Parallel zum bestehenden Ansatz
    • Kern: robustere und ressourcenschonendere Anwendungen
    • Reactive Manifest: 

    „elastisch, robust, jederzeit antwortbereit und nachrichtenorientiert.“

    View Slide

  24. Exkurs: Mono und Flux
    16
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • Implementierungen eines Publishers der Flow-API
    • Mono: Publiziert 0 oder 1 Element
    • Flux: Publiziert n Elemente

    View Slide

  25. Marble Diagramm Flux
    17
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666

    View Slide

  26. Spring WebFlux
    18
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    Steht gleich-
    berechtigt neben
    Spring Web MVC

    View Slide

  27. • Neuer Starter:

    • Setzt automatisch @EnableWebFlux
    • Lauffähig auf allen Servlet 3.1 Containern, die Non-Blocking IO API
    unterstützen, aber auch auf Netty oder Undertow
    • Basis-Technologie: Project Reactor, alternativ kann RxJava konfiguriert werden.
    Spring WebFlux
    19
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666

    org.springframework.boot
    spring-boot-starter-webflux

    View Slide

  28. Spring WebFlux mit klassischen Annotationen
    20
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    @RestController
    public class DemoRestController {
    @GetMapping("/helloworld")
    public Mono getGreeting(
    @RequestParam(defaultValue = "World") String name
    ) {
    return Mono.just("Hello")
    .flatMap(s -> Mono
    .just(s + ", " + name + "!\n")
    );
    }
    }

    View Slide

  29. Kotlin-Extensions & Reactive Anwendungen ohne Annotationen
    21
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    Ich wechsle mal eben in die IDE

    View Slide

  30. Actuator 2
    22
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666

    View Slide

  31. Technologieunabhängig
    23
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    Gleichermaßen und gleichartig verfügbar für
    • Spring Web MVC
    • Spring Web Flux
    • Jersey / JAX RS
    • JMX

    View Slide

  32. Eigene Endpunkte
    24
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    Kennzeichnung über @Endpoint
    @Endpoint(id = "custom")
    public class CustomEndpoint {
    private final AtomicInteger cnt =
    new AtomicInteger();
    @ReadOperation
    public String someReadOperation() {
    return "Current value " + cnt.get();
    }
    @WriteOperation
    public String someWriteOperation() {
    return "New value " +
    cnt.incrementAndGet();
    }
    }

    View Slide

  33. Eigene Endpunkte
    25
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    @ManagementContextConfiguration
    public class CustomEndpointConfig {
    @Bean
    public CustomEndpoint customEndpoint() {
    return new CustomEndpoint();
    }
    }
    Instanziierung mittels Java-Config und…
    org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration = \
    de.springbootbuch.actuators.CustomEndpointConfig
    spring.factories

    View Slide

  34. Neuer Basispfad und Namen
    26
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • Alle Endpunkte befinden sich nun unterhalb von
    /actuator

    konfigurierbar über
    management.endpoints.web.base-path
    • Umbenennungen
    • /trace -> /httptrace
    • /autoconfig -> /conditions
    • Entfernt
    • /actuator (als dezidierter Endpunkt)
    • /docs

    View Slide

  35. Neues JSON-Format
    27
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    Downstream-Services müssen angepasst werden für
    • /actuator/env
    • /actuator/flyway
    • /actuator/httptrace
    • /actuator/mappings
    • /actuator/metrics
    • /actuator/liquibase
    (Neues Format für micrometer.io!!)

    View Slide

  36. Spring Security 5
    28
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666

    View Slide

  37. Neue Funktionalitäten
    29
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • OAuth 2.0 Login ist Kernfunktion von Spring Security 5
    • Vollständige Kompatibilität zum Reactive Stack
    • Reactor-Context übernimmt Rolle des Thread-Locals
    • Modernisierte Passwortspeicherung

    View Slide

  38. Modernisierte Passwortspeicherung
    30
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • Entfernung von

    org.springframework.security.authentication.encoding.PasswordEncoder
    • ShaPasswordEncoder
    • Md5PasswordEncoder
    • Neu

    org.springframework.security.crypto.password.*

    View Slide

  39. Modernisierte Passwortspeicherung
    31
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    DelegatingPasswordEncoder
    • Hashing neuer Passwörter
    • Validierung von Passwörtern mit unterschiedlichen Hashformaten
    • Hash-Format soll in Zukunft einfacher änderbar sein
    • Neues Format

    {id}encodedPassword
    • Validierung mit Encoder für entsprechende ID
    • Default-Encoder möglich für Passwörter ohne ID
    • Hashing gemäß konfigurierter ID

    View Slide

  40. Magic be gone…

    View Slide

  41. Weniger Autokonfiguration ist mehr
    33
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • Feingranulare Autokonfiguration entfällt
    • Anpassung über eigene Bean vom Typ
    WebSecurityConfigurationAdapter
    • Achtung: Sobald vorhanden, übernimmt Boot keine Konfiguration mehr

    View Slide

  42. Nicht mehr über Properties konfigurierbar
    34
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • security.basic.authorize-mode
    • security.basic.enabled
    • security.basic.path
    • security.basic.realm
    • security.enable-csrf
    • security.headers.cache
    • security.headers.content-security-policy
    • security.headers.content-security-policy-mode
    • security.headers.content-type
    • security.headers.frame
    • security.headers.hsts
    • security.headers.xss
    • security.ignored
    • security.require-ssl
    • security.sessions
    Also quasi nichts mehr ;)

    View Slide

  43. Standardverhalten entspricht „plain“ Spring Security 5
    35
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • Schutz aller Endpunkte per Default
    • Content-Negotiation
    • Form-Login für Browser-ähnliche Requests
    • Basic-Auth für REST Requests
    • Integration mit Spring Data

    View Slide

  44. Spring Data
    36
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666

    View Slide

  45. Die Neuerungen im Überblick
    37
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • Upgrade auf Spring Data Kay:
    • Überarbeitung der Repository-API
    • Eigenständige Kotlin-Unterstützung für Datenklassen, die immutable sind
    • Deklaration für Nullability-Contraints
    • Reactive Support, für Stores mit non-blocking APIs
    • Datastore spezifische Aktualisierungen
    • Über 550 Changes in 13 Modulen

    View Slide

  46. Überarbeitung der Repository-API
    38
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    interface CrudRepository
    extends Repository
    {
    S save(S entity);
    Iterable saveAll(Iterable entities)
    Optional findById(ID id);
    boolean existsById(ID id);
    Iterable findAllById(Iterable ids);
    void deleteById(ID id);
    void delete(T entity);
    void deleteAll(Iterable extends T> entities);
    }
    • Neue Methoden-Namen
    • findOne - findById
    • Iterable bei save / delete
    mit All am Ende
    • ID Typ muss nicht mehr
    serialisierbar sein

    View Slide

  47. Komponierbare Repositories
    39
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • Repositories können mit Spring Data Kay aus aus unterschiedlichen
    Fragmenten zusammengestellt werden
    • Die Einschränkung auf eine Basis-Implementierung und eine zusätzliche
    Implementierung wurde aufgehoben

    View Slide

  48. Komponierbare Repositories
    40
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    public interface CustomerRepository extends
    CrudRepository,
    PersonFragment,
    CustomerBulkLoader {
    }
    public interface CustomerBulkLoader {
    void loadCustomers(String fileName);
    }
    public class CustomerBulkLoaderImpl implements CustomerBulkLoader {
    @Override
    public void loadCustomers(String fileName) {
    System.out.println("Loading customers from " + fileName);
    }
    }

    View Slide

  49. Reactive Support für Stores mit non-blocking APIs
    41
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • Auch Spring Data folgt der großen „Reactive Story“ von Spring 5
    • Aber: nicht alle Datastores / Technologien haben non-blocking APIs (z.B. JPA /
    JDBC)
    • Aktuell unterstützt Spring Data Kay folgende Technologien im Hinblick auf
    reactive:
    • Redis
    • MongoDB
    • Couchbase
    • Cassandra

    View Slide

  50. • Neuer Starter:

    • Repository:



    Reactive Support am Beispiel von MongoDB
    42
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666

    org.springframework.boot
    spring-boot-starter-data-mongodb-reactive

    public interface FilmRepository extends
    ReactiveMongoRepository
    {
    @Tailable
    Flux streamAllBy();
    }
    Unterstützung für infinite Streams (wurde
    von @InfiniteStream umbenannt)

    View Slide

  51. Reactive Support am Beispiel von MongoDB
    43
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    @RestController
    public class FilmRestController {
    private final FilmRepository filmRepository;
    public FilmRestController(FilmRepository filmRepository) {
    this.filmRepository = filmRepository;
    }
    @GetMapping("/api/films")
    public Flux getAll() {
    return filmRepository
    .findAll(Sort.by("title").ascending());
    }
    }
    • Verwendung von Reactive Repositories

    View Slide

  52. Datastore Spezifische Upgrades
    44
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • MongoDB:
    • Fluent MongoOperations API
    • MongoDB Collation Support
    • Redis:
    • Split der Client Konfiguration in environment- und client-spezifische Teile

    View Slide

  53. Datastore Spezifische Upgrades
    45
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • Spring Data für Apache Cassandra:
    • Streamlining des Modul-Layouts

    (merge von spring-cql und spring-data-cassandra)
    • Cassandra Query & Update Objekte
    • Leichtgewichtige Transaktionen
    • Elasticsearch:
    • Upgrade auf 5.4
    • Impact auf public APIs (replace von scan() durch scroll()

    View Slide

  54. Todos

    View Slide

  55. Harmonisierung von Konfigurationseigenschaften
    47
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • Verringerung der genutzten Präfixe
    • spring.*
    • management.*
    • server.*
    • server.servlet.*
    • logging.*

    org.springframework.boot
    spring-boot-properties-migrator
    true

    View Slide

  56. Duales System Servlet und Reactive
    48
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • Keine transitive Abhängigkeit mehr auf Spring MVC
    • Geben Sie explizit an, ob Sie MVC oder WebFlux nutzen
    • Änderung der Package Strukturen
    • org.springframework.boot.context.embedded ->

    org.springframework.boot.web.embbeded

    Passen Sie entsprechend die Imports und Klassen an

    View Slide

  57. Spring Data generell
    49
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • Harmonisierung von Methodennamen
    • insbesondere
    findOne
    ->
    findById
    • Optional
    als Default-Rückgabewert
    • save
    und
    delete
    für Iterables sind nun
    saveAll
    beziehungsweise
    deleteAll

    View Slide

  58. Relationale Datenbanken
    50
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • Spring Boot 2 bringt Flyway 5 mit

    https://flywaydb.org/documentation/releaseNotes#5.0.0
    • Vor dem Upgrade auf Spring Boot 2 auf Flyway 4 aktualisieren
    • Dann erst auf Boot 2 + Flyway 5
    • HikariCP per Default

    View Slide

  59. Nicht-relationale Datenbanken
    51
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • Lettuce ersetzt Jedis als Default-Redis-Treiber
    • ElasticSearch nun mindest in 5.4+
    • Embedded Variante wird nicht mehr unterstützt

    View Slide

  60. Security
    52
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • Konfiguration über Properties ist nicht mehr möglich
    • Default-Verhalten entspricht nun Spring Security
    • OAuth wird aktuell komplett überarbeitet
    • Spring Security Core
    • Spring Security OAuth
    • Spring Cloud Security
    • Spring Boot OAuth2 (Nur für Boot 1.5.x)

    Aktuelle FAQ zu den verschiedenen Modulen

    https://github.com/spring-projects/spring-security/wiki/OAuth-2.0-Features-
    Matrix
    • Passwörter müssen idR aktiv migriert werden

    View Slide

  61. Security (Passwörter)
    53
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • Default-Encoder in Boot 1 genutzt:
    • Ihre Passwörter sind als Plain-Text gespeichert. Hashen Sie diese!
    • Zur absoluten Not mit {noop} präfixen oder NoOpPasswordEncoder als
    Default-PasswordEncoder konfigurieren (Bitte nicht).
    • Passwörter sind ohne Salt-Source gehashed
    • Präfix hinzufügen
    • Default-Encoder für Validierung konfigurieren
    http://info.michael-simons.eu/2018/01/13/spring-security-5-new-password-
    storage-format/

    View Slide

  62. Actuator
    54
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • Generell: Anpassung von Downstream-Diensten
    • Pfade

    (ID / Name nicht länger konfigurierbar)
    • Formate
    • Schnittstellen

    https://docs.spring.io/spring-boot/docs/current/actuator-api/html/
    • Konfiguration
    • Security

    View Slide

  63. Actuator (Konfiguration)
    55
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    Alt Neu
    endpoints..* management.endpoint..*
    endpoints.cors.* management.endpoints.web.cors.*
    endpoints.jmx.* management.endpoints.jmx.*
    management.address management.server.address
    management.context-path management.server.servlet.context-path
    management.ssl.* management.server.ssl.*
    management.port management.server.port
    Quelle: https:/
    /github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide#spring-boot-actuator

    View Slide

  64. • Keine spezielle Security-Konfiguration mehr
    • Kein „sensitive“-Flag mehr
    • Unterscheidung zwischen „enabled“ und „exposed“
    • Alle enabled, nur „health“ und „info“ exposed
    • Konfiguration technologiespezifisch, white oder blacklist
    • management.endpoints.(web|jmx).exposure.(exclude|include)
    Actuator (Security)
    56
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666

    View Slide

  65. public class ApplicationWebSecurityConfigurerAdapter
    extends WebSecurityConfigurerAdapter
    {
    @Override
    protected void configure(final HttpSecurity http) throws Exception {
    http
    .httpBasic().and()
    .authorizeRequests()
    .requestMatchers(
    to(
    HealthEndpoint.class,
    InfoEndpoint.class,
    MetricsEndpoint.class
    )
    )
    .permitAll()
    .requestMatchers(to(EnvironmentEndpoint.class))
    .authenticated();
    }
    }
    Konfiguration von Actuator-Security
    57
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666

    View Slide

  66. Testen
    58
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    • Upgrade von Mockito 1.x auf 2.x
    • JUnit 5 wird unterstützt

    View Slide

  67. 59
    • Slides: speakerdeck.com/michaelsimons
    • Spring Boot Buch
    • Begonnen Januar 2017
    • Erscheint Dezember 2017, Januar 2018, Februar 2018

    demnächst endlich verfügbar !
    • @SpringBootBuch // springbootbuch.de
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666
    Ressourcen

    View Slide

  68. Bildquellen
    60
    • Heaven Shall Burn: Michael Plöd
    • Geburtstagskuchen: https://www.flickr.com/photos/tillwe/4229605730
    • Security: https://unsplash.com/photos/Nfw3-kdOt7o
    • Todos: https://www.flickr.com/photos/29853404@N03/4579520419/
    Spring Boot 2: Hot topics und Migration / @bitboss und @rotnroll666

    View Slide