Developer

Aktuelle Themen

Mapping von Exceptions in Spring Boot

Oftmals müssen unchecked Exceptions aus dem Service-Layer einer Applikation in z.B. entsprechende HTTP-Fehlercodes konvertiert werden. Spring Boot bietet hierfür eine elegante Möglichkeit über die Annotation @ExceptionHandler an.

Beispiel

Es sollen alle ConstraintViolation-Fehler im Zusammenhang mit der Bean Validation API automatisch in 400er HTTP-Responses gemappt werden.

Hierzu erstellt man einfach einen neuen ControllerAdvice mit einer ExceptionHandler-Methode, die das Mapping beschreibt:

Möchte man noch weitere Exceptions mappen, kann man dies einfach durch Hinzufügen weiterer ExceptionHandler-Methoden in der ExceptionMapper-Klasse erreichen.

 

 

Unable to process Jar entry [module-info.class] from Jar

After updating the JAX-WS libraries of my current project to version 2.3.0, I got an error message in the log file when starting up Tomcat:

We’re using Tomcat 8.5, running with Java 8.

The presence of the file module-info.class within the jar file points out to the fact that version 2.3.0 of JAX-WS is ready to be used with Java 9. With the module info, a module of the Java Platform Module System declares other modules on which it depends, as well as the packages it wants to expose to other modules.

When analyzing the jar file I found that, while the Java classes have been compiled with Java 7, the module-info.class was (unsurprisingly) compiled with Java 9.  No wonder that a ClassFormatException occurs when running the application with Java 8.

So what to do with the exception?

  • Just ignore it, since it does no harm
  • Disable JarScanner
  • Run Tomcat with Java 9

 

 

Welcher JavaBean-Mapper? Die Qual der Wahl…

Ablösung von Dozer

In einem Kundenprojekt setzten wir Dozer ein, um Objekte zwischen Klassen der verschiedenen Anwendungsschichten (Persistenz, Domain Model, Webservice etc.) zu mappen. Wobei im Projekt nicht nur einfaches Mapping durchgeführt wird, sondern teils auch komplexere Konvertierungen gemacht werden müssen.

Dozer kopiert die Attribute per Reflection vom Ursprungs- ins Zielobjekt – je nach Konfiguration wahlweise durch Aufrufen der entsprechenden getter- und setter-Methoden, oder durch direktes lesen und schreiben der Objektattribute. Da Dozer deswegen im Bereich Performance nicht gerade glänzt, begaben wir uns auf die Suche nach einer performanteren Alternative.

Auf dieser Webseite gibt es eine gute Übersicht zu gängigen Mapping-Frameworks inklusive einer Auflistung von deren Vor- und Nachteilen. Da die beiden Frameworks JMapper und MapStruct im Vergleich die beste Performance zeigten, haben wir uns diese beiden näher angesehen. Nachfolgend schildere ich die Erfahrungen, die wir mit den Mappern gemacht haben.

Mehr

Automated UI-Testing mit Jubula: Ein Erfahrungsbericht

Jubula ist ein automatisiertes GUI Testing Tool welches auf dem vormals kommerziellen Tool GUIDancer basiert. Die Codebasis wurde von der Firma BREDEX GmbH an die Eclipse Foundation gestiftet. Jubula erlaubt die einfache und schnelle Erstellung von funktionalen Tests, entweder in einer Stand-Alone Version oder als Plug-In für Eclipse. Außerdem ermöglicht die Jubula Client API, Tests auch in Java Code zu schreiben und via JUnit zu starten.
Mehr

Convention over Configuration in Spring Boot

Komplexe Konfigurationen für eine simple Testanwendung gehören der Vergangenheit an: Mit Convention over Configuration in Spring Boot lässt sich die Komplexität von Konfigurationen stark reduzieren: Solange man sich an die Konventionen hält, die das Framework vorgibt, entfallen viele manuelle Konfigurationen. Beispielsweise werden die passenden Spring Beans erzeugt, wenn bestimmte Klassen im Pfad enthalten sind. Sind die passenden Beans hingegen bereits durch eine manuelle Konfiguration vorhanden, werden sie auch nicht erzeugt. [1]

Eine Spring Boot Anwendung kann über die vom Framework festgelegten Standardkonfigurationen somit schnell lauffähig gemacht werden, der Entwickler kann diese jedoch auch problemlos überschreiben.

Mehr