Micronaut für zeitgemäße Webanwendungen

Seite 3: Template Engines

Inhaltsverzeichnis

Obwohl Micronaut in erster Linie auf den Austausch von Daten (zum Beispiel im JSON-Format) ausgerichtet ist, gibt es Anwendungsfälle, für die es nützlich ist, eine dynamische HTML-Seite auf dem Server zu erzeugen und zu rendern. Das Modul io.micronaut:views ermöglicht ein solches View-Rendering auf der Serverseite. Das Rendern erfolgt auf dem I/O-Threadpool, um das Blockieren der Netty Event-Loop zu vermeiden.

Für die Template Engine kann man momentan zwischen Thymeleaf, Velocity und Handlebars wählen. Micronaut instanziiert beim Hinzufügen der Bibliotheken jeweils eine ViewRenderer-Klasse.

Der Web-Controller kann mit der Annotation @View das zu verwendende View-Template definieren. Rückgabewert ist zum Beispiel eine HttpResponse mit einer Map-Instanz, eine aus Spring adaptierte ModelAndView-Instanz oder ein eigenes Plain Old Java Object (POJO) als Datenquelle für die Platzhalter im View-Template.

@Controller("/workshops")
class WorkshopsController {
@Get("/")
@View("workshops")
public HttpResponse workshops() {
return HttpResponse.ok(...);
}
}

Neben den unterstützten View Engines ist es möglich, eine eigene View Engine bereitzustellen. Hierzu müssen Entwickler eine Klasse bereitstellen die das Interface io.micronaut.views.ViewRenderer implementiert. Die @Produces-Annotation definiert, welche Medientypen das View-Rendering unterstützt (z.B. application/json). Ohne Verwendung von View-Templates werden Objekte, die die Controller-Methoden zurückgeben, automatisch zu JSON umgewandelt.

Grails-Entwickler können sich darüber freuen, dass Micronaut das ORM-Framework GORM offiziell unterstützt. Es bietet eine Vielzahl an APIs für den Zugriff auf SQL-Datenbanken wie PostgreSQL mit Hibernate sowie NoSQL-Datenbanken wie Neo4j, Redis, MongoDB und Cassandra.

Als Connections Pools für SQL DataSource-Instanzen können Entwickler Commons DBCP, Hikari CP und Tomcat CP verwenden. Hibernate kommt für JPA und GORM zum Einsatz. Der MongoDB Reactive Driver und Mongo GORM stehen für die Anbindung von MongoDB zur Verfügung. Für Neo4j ist es der Bolt Java Driver oder GORM for Neo4j. Auch für Postgres steht ein Reactive-PostgreSQL-Client bereit. Bei Nutzung von Redis wird der Lettuce-Treiber eingebunden. Für Cassandra ist es der Datastax Java Driver. Auch hier ist erkennbar, dass Micronaut das Paradigma der reaktiven Programmierung durchgängig berücksichtigt.