Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Spring Boot entzaubert

Spring Boot entzaubert

Häufig wird im Zusammenhang mit Spring Boot das Wort “Magie” erwähnt.

Tatsächlich können der Einsatz von Annotationen und die sonstigen Mechanismen, die unter der Haube von Spring Boot werkeln, gerade auf Menschen ohne jahrelange Spring Erfahrung magisch wirken. Diese Session zeigt, aus welchen Bestandteilen Spring Boot besteht und wie diese im Detail funktionieren. Dabei wird auch klar, welche Arbeit uns das Framework abnimmt. Am Ende angekommen wirkt das ganze dann nicht mehr magisch, sondern eher wie mit Wasser kochen.

Michael Vitz

December 09, 2020
Tweet

More Decks by Michael Vitz

Other Decks in Programming

Transcript

  1. Spring Boot entzaubert 9 . D e z e m

    b e r 2 0 2 0 I N N O Q Te c h n o l o g y D a y #INNOQTechnologyDay @michaelvitz
  2. 7

  3. 8

  4. 9

  5. 11 @RestController @SpringBootApplication public class Application { @GetMapping public String

    index() { return "Hello everybody!”; } public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
  6. 12

  7. 18

  8. 19

  9. 21

  10. 22 Eigene Auto-Konfiguration •Besteht aus •Klasse mit @Configuration und Bedingungen

    •Eintrag in META-INF/spring.factories der auf Klasse verweist •Optional •Weitere Klassen •Tests für die eigene Auto-Konfiguration https://docs.spring.io/spring-boot/docs/current/reference/html/spring- boot-features.html#boot-features-developing-auto-configuration
  11. 25 [INFO] Scanning for projects... [INFO] [INFO] --------------------------< com.innoq:YDKiQ >---------------------------

    [INFO] Building YDKiQ 0.1.0-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-dependency-plugin:3.1.2:tree (default-cli) @ YDKiQ --- [INFO] com.innoq:YDKiQ:jar:0.1.0-SNAPSHOT [INFO] +- org.springframework.boot:spring-boot-starter-thymeleaf:jar:2.4.0:compile [INFO] | +- org.springframework.boot:spring-boot-starter:jar:2.4.0:compile [INFO] | | +- org.springframework.boot:spring-boot-starter-logging:jar:2.4.0:compile [INFO] | | | +- ch.qos.logback:logback-classic:jar:1.2.3:compile [INFO] | | | | \- ch.qos.logback:logback-core:jar:1.2.3:compile [INFO] | | | +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.13.3:compile [INFO] | | | | \- org.apache.logging.log4j:log4j-api:jar:2.13.3:compile [INFO] | | | \- org.slf4j:jul-to-slf4j:jar:1.7.30:compile [INFO] | | +- jakarta.annotation:jakarta.annotation-api:jar:1.3.5:compile [INFO] | | \- org.yaml:snakeyaml:jar:1.27:compile [INFO] | +- org.thymeleaf:thymeleaf-spring5:jar:3.0.11.RELEASE:compile [INFO] | \- org.thymeleaf.extras:thymeleaf-extras-java8time:jar:3.0.4.RELEASE:compile [INFO] +- org.springframework.boot:spring-boot-starter-web:jar:2.4.0:compile [INFO] | +- org.springframework.boot:spring-boot-starter-json:jar:2.4.0:compile [INFO] | | +- com.fasterxml.jackson.core:jackson-databind:jar:2.11.3:compile [INFO] | | | \- com.fasterxml.jackson.core:jackson-annotations:jar:2.11.3:compile [INFO] | | +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.11.3:compile [INFO] | | +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.11.3:compile [INFO] | | \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.11.3:compile
  12. 26 Archive: spring-boot-starter-thymeleaf-2.4.0.jar Length Date Time Name --------- ---------- -----

    ---- 0 11-12-2020 14:05 META-INF/ 283 11-12-2020 14:05 META-INF/MANIFEST.MF 211 11-12-2020 13:55 META-INF/NOTICE.txt 11359 11-12-2020 13:55 META-INF/LICENSE.txt --------- ------- 11853 4 files
  13. 27 Spring Boot Starter •Verwalten “nur” die Abhängigkeiten •Eigentliche Logik

    wird durch die Autoconfigure Abhängigkeit bereitgestellt •über 50 offizielle Starter https://docs.spring.io/spring-boot/docs/current/reference/html/using- spring-boot.html#using-boot-starter •zusätzliche von der Community gepflegte https://github.com/spring-projects/spring-boot/blob/master/spring-boot- project/spring-boot-starters/README.adoc
  14. 30 Externe Konfigurationsquellen •Command Line Argumente •JNDI •Java System Properties

    •Umgebungsvariablen •Property (oder YAML) Dateien an diversen Stellen
  15. 31 Externe Konfiguration Benutzung •Verwendung via @Value(“${my.property}”) •oder über eigene

    @ConfigurationProperties Klasse •Hunderte von bereits vorhandenen Properties https://docs.spring.io/spring-boot/docs/current/reference/html/appendix- application-properties.html •Mittels spring-boot-configuration-processor Auto-Completion für IDEs https://docs.spring.io/spring-boot/docs/current/reference/html/appendix- configuration-metadata.html#configuration-metadata-annotation- processor
  16. Krischerstr. 100 40789 Monheim am Rhein Germany +49 2173 3366-0

    Ohlauer Str. 43 10999 Berlin Germany +49 2173 3366-0 Ludwigstr. 180E 63067 Offenbach Germany +49 2173 3366-0 Kreuzstr. 16 80331 München Germany +49 2173 3366-0 Hermannstrasse 13 20095 Hamburg Germany +49 2173 3366-0 Gewerbestr. 11 CH-6330 Cham Switzerland +41 41 743 0116 innoQ Deutschland GmbH innoQ Schweiz GmbH www.innoq.com Danke! Fragen? Michael Vitz [email protected] +49 151 19116015 @michaelvitz