Slides and demo code for my talk at W-JAX2016
HTML JavaScript Java CSS
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
demo
slides
thymeleaf-banner-spring-boot-starter
.gitignore
LICENSE.txt
README.md
pom.xml

README.md

Keine Magie: Individuelle Spring-Boot-Module

Important: The commits and commit messages have been written very carefully to guide you through reading this project and understanding the talk. Please take your time to study them if you don't understand something.

Wichtig: Die Commits und die Kommentare sind sehr ausführlich und beinhalten wichtige Teile des Vortrages. Vielleicht helfen sie weiter, wenn etwas unverständlich ist.

Slides

The slides are inside this repository and also on Speakerdeck:

Keine Magie: Individuelle Spring-Boot-Module

Vortrag auf der W-JAX 2016

Note: The talk and the slides are in German as W-JAX con is a German conference, the demo, the readme and other artifacts inside this repo are in English in hope they are useful to a broader audience.

Dieses Repository beinhaltet den Foliensatz und die komplette Demo des Vortrages.

Das Ziel des Vortrages ist, zu zeigen, dass die automatische Konfiguration des Spring Frameworks durch Spring Boot keine Magie ist und wie man sich die Möglichkeiten automatischer Konfiguration zu nutze machen kann.

Das Beispiel des Vortrag ist ein eigener Dialekt für die Template Engine Thymeleaef. Es wird ein HTML Tag entwickelt, dass den Spring Boot Banner als ASCII Art innerhalb eines Thymeleaf Templates anzeigen kann.

Dabei werden folgende Themen demonstriert:

  • Der korrekte Weg, aus einer Configuration Klasse eine AutoConfiguration Klasse zu machen, die innerhalb eines *-spring-boot-starter.jar automatisch ohne einen "Full-Classpath-Scan" gefunden wird
  • Vorstellung der Annotationen ConditionalOnClass, ConditionalOnProperty, ConditionalOnBean sowie deren Negationen
  • Möglichkeiten zum Debugging automatischer Konfiguration

Fragen und Antworten

Während des Vortrags kam die Frage auf, wie man die Benutzer eines Starters bei der Konfiguration desselben unterstützen könne.

Die üblichen Java IDEs NetBeans, Eclipse und IntelliJ bieten eine Autovervollständigung für die Properties aller möglichen Starter.

Dieses Feature kann sehr einfach für eigene Starter realisiert werden. In Appendix B. Configuration meta-data wird beschrieben, wie eine Datei META-INF/spring-configuration-metadata.json aussehen muss, die die relevanten Informationen beinhaltet.

Setzt man in seinem Starter Klassen ein, die mit @ConfigurationProperties annotiert sind, um seine Properties zentral zur Verfügung hab und hat die Attribute der Klassen ordentlich mit JavaDoc Kommentaren dokumentieren, kann obige Datei generieren lassen:

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-configuration-processor</artifactId>
      <optional>true</optional>
    </dependency>

In meinem wro4j-spring-boot-starter habe ich dies im Commit #a59b3f4 exemplarisch gemacht, das Ergebnis ist direkt sichtbar:

Support of configuration properties

Weitere Informationen

Der Vortrag existiert auch in einer englischen Version, die auf der Spring I/O 2016 vorgestellt wurde. Ein Videomitschnitt ist auf YouTube zu sehen: Customize your Spring Boot experience by writing your own Spring Boot starter.

Kontakt

Gerne über michael-simons.eu oder Twitter, ich bin @rotnroll666.

License

Creative Commons Lizenzvertrag
"Keine Magie: Individuelle Spring-Boot-Module" von Michael J. Simons ist lizenziert unter einer Creative Commons Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 4.0 International Lizenz.

Bildrechte der Präsentation

  • "High Voltage Towers": © iStockphoto.com/querbeet
  • "Old New Architecture Winnipeg": © iStockphoto.com/photosmash
  • "Freddie Mercury": Still from Queens 1986 "A Kind Of Magic" music video