a dev's blog

Some thoughts about thoughts.

Performance Messungen mit Spring AOP

2016-08-01 Development Java Spring
Intro Tjaja… die Performance. Wie oft kommt eine Situation vor, dass man gerne wissen möchte welche Methodenausführung wie lange dauert. Es gibt da natürlich tolle Hilfsmittel wie XRebel von zeroturnaround, jedoch habe ich mich oft für einfachere Möglichkeiten interessiert. Eine - wie ich finde - sehr schicke und schlichte Art der Performance Messung lässt mit mittels AOP realisieren. Dabei sieht das Ziel genau so aus, dass wir eine beliebige Methode mit einer Annotation versehen können und daraufhin im Log Performance-Messungen zu dieser Methode lesen können. Weiterlesen

InvalidPathException mit Spring MockMvc und jsonPath

2016-03-17 Development Java Spring
Die Lösung des Problems Gerade über eine merkwürdigkeit gestolpert… In der aktuellen Spring-Boot Version 1.3.3-RELEASE bekommt man bei der Nutzung von MockMvc und jsonPath folgende Exception: java.lang.NoClassDefFoundError: com/jayway/jsonpath/InvalidPathException at org.springframework.test.web.servlet.result.JsonPathResultMatchers.<init>(JsonPathResultMatchers.java:52) at org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath(MockMvcResultMatchers.java:192) ... a lot of more lines Ich bin mir ziemlich sicher, dass das mal anders war. Wie auch immer…jayway.jsonpath fehlt uns im Classpath. Die pragmatische Lösung lautet also die Library selbst in die pom.xml aufzunehmen. In der nächsten Spring-Boot Version ist es bereits wieder im spring-boot-starter-test enthalten. Weiterlesen

Eine schöne Mapped-Superclass mit Spring-Data und JPA

2016-02-25 Development Java Spring
Intro Object-relational-mapping ist eine schöne Sache und gibt dem Entwickler richtige, echte Objekte an die Hand, wenn er die Datenbank abfragt. Meist ist es auch noch so, dass wir gerne noch irgendwelche Meta-Informationen an unseren Datensätzen haben. Ich persönlich möchte in jedem Fall wissen, welcher User etwas bei mir in der Datenbank aktualisiert oder erstellt hat - und vor allem möchte ich wissen, wann das passiert ist. JPA (die Java Persistence API) gibt uns da schon einiges an die Hand. Weiterlesen

Die Spring-Security-Taglib in Spring-Boot

2016-02-24 Development Java Spring
Intro Spring-Security ist schon ein sehr schönes Stück Software. Und nutzt man JSPs oder Thymeleaf zum Darstellen seines View-Layers, können Verrechtungen von Links oder ganzen Code-Blöcken sehr elegant und kurz gefasst werden. Setup Zunächst einmal habe ich ein kleines Beispielprojekt auf Github, was du nutzen kannst um dir einen besseren Überblick zu verschaffen oder um die ganze Sache mal auszuprobieren. Ich gehe davon aus, dass du ein Projekt mit Spring-Boot, Spring-Security und Thymeleaf starten willst. Weiterlesen

User-Impersonation mit Spring-Boot und Spring-Security

2016-02-21 Development Java Spring
Wenn man sich in andere rein versetzt… … dann kann das Einem unter Umständen das Leben erleichtern. Beispielweise wenn sich User X bei der eigenen Hotline meldet um einen Fehler in der Anwendung zu reporten. Vielleicht ist es aber auch gar kein Fehler, sondern ein User braucht Unterstützung bei irgendeinem Prozess, der von der Applikation abgedeckt wird. In beiden Fällen ist es meiner Erfahrung nach enorm hilfreich, wenn man selbst die Rolle des Users annehmen kann - und dies ohne zuvor sein Passwort zurücksetzen zu müssen, damit man sich selbst einen Login verschafft. Weiterlesen

PID Generation mit Spring-Boot

2016-02-19 Development Java Spring
Ich finde dich. Ich finde deine PID und dann bin ich dein Meister Die PID. Dieses nützliche kleine Ding. Man benötigt sie beispielsweise für Init-Skripte oder das Monitoring der Applikation. Aber wie finde ich die PID von einem Prozess? Klar… ganz einfach so: Nicht ernst meinen bitte, die bessere Lösung findet sich unten. ;) foo@bar:~ pgrep java 17889 30554 30555 Hmm…. Hilft nur bedingt gut. Versuchen wir es anders: Weiterlesen

Wissen was der User macht. MDC Logging mit Spring-Boot.

2016-02-11 Development Java Spring
Eine Logmeldung ohne User-Informationen ist nichts Wert… … aber wer will schon bei jeder Zeile den Usernamen übergeben? Was ist schöner? LOG.info("foo {}", username) oder LOG.info("foo")? Und welche Lösung ist konsequenter? Und wie suggestiv sind diese Fragen? ;) Ich habe die Erfahrung gemacht, dass es in vielen Situationen sinnvoll ist die Log-Meldungen durch Context-Informationen anzureichern, die den aktuellen Prozess besser darstellen. Eine Grundlegende Funktion, die ich in jeder Webapplikation sehe ist ein Filter, der - falls ein User eingeloggt ist - dafür sorgt, dass der Username in jeder Logmeldung auftaucht. Weiterlesen
Ältere Beiträge