Mittwoch, 4. Juni 2025

Spring Boot und die Annotationshölle

 Spring und Spring Boot sind sehr gute Frameworks und haben aus meiner Sicht zu Recht J2EE ersetzt. Einer der Probleme von Spring Boot Applikationen ist der Annotationsjungel. Es gibt in vielen Projekten Klassen mit 5, 6 oder 7 Klassenannotationen auch Methoden oder Felder haben machmal 3 Annotationen.  Und für den Programmierer ist das schwer zu verstehen:

  1. Was bedeutet die Annotation?
  2. Aus welchem Framework stammt sie: Spring, Hibernate, Lombok, Shedlock, ... ?
  3. Wie funktionieren sie?

Hier ein paar wichtige Annotationen, wie sie funktionieren. 

Spring Sterotype Annotationen wie Service oder Component funktionieren via Klassenname. Paketnamen sind egal, das heisst, wenn ich zwei Klassen mit dem selben Namen habe die aber in anderen Paketen sind, dann führt das zu einem Konflikt.

Lombok Annotationen wie Getter, ... funktionieren über Code Ergänzungen. Das ist meist unkritisch. 

Spring Annotationen wie Retry, Transactional oder Shedlock Annotationen funktionieren über Wrapper oder Proxy Klassen  (Hello Grails and Groovy). Diese Annotationen sind in der Verwendung kritischer, weil sie nur von Aussen funktionieren. Das heisst, die annotierte Methode muss public oder im default Scope sein und der Aufruf muss aus einer anderen Klasse erfolgen. Dann läufts wie erwartet.

Und jetzt die gefährlichsten Annotationen, Anootationen ohne Funktion, die nur die Lesbarkeit erhöhen, wie z.B. JetBrains NotNull nicht zu verwechseln mit  Jakarta Validation NotNull oder Lombok NonNull. JetBrains NotNull dient  nur der Dokumentation und ggf. der statischen Code Analyse.

So, know your annotations. Happy coding life. 

Keine Kommentare:

Kommentar veröffentlichen