Spring Dependency Graph mit yEd / Graphml

Wenn man ein fremdes Projekt, was mit Spring gemacht ist, zum ersten Mal anschaut, ist es nicht leicht sich einen Überblick zu verschaffen. Insbesondere die Abhängigkeiten der SpringBeans untereinander sind nicht leicht zu überschauen.

Verschiedene IDE Integrationen versprechen Abhilfe. Die Spring Tool Suite (STS) kann beispielsweise einen Abhängigkeitgraphen anzeigen, allerdings erlebt man eine Enttäuschung wenn man dies mit einem auch nur halbwegs ernsthaften Projekt versucht.Das Ergebnis ist enttäuschend: man sieht schlicht nichts, das Layout der Beans ist starr und die Kanten, die die Abhängigkeiten darstellen, laufen wild durch den Graphen. Man kann nicht mal erkennen, welcher Knoten mit welchem verbunden ist.

Die Möglichkeiten mit einem Graph zu arbeiten und so Übersicht zu erzeugen fehlt komplett. Wenn man hier den Luxus eines Werkzeugs wie yEd gewohnt ist, der vielfältige Möglichkeiten bietet, ist die Lösung schnell gefunden:

Man generiert einen Graphen im graphml Format, um ihn dann mit yEd bearbeiten zu können. Das ist, mit einem Satz gesagt, das was die angehängte Klasse tut.

Der Spring-Context wird mit Spring selbst gelesen und analysiert und dann wird ein graphml File ausgegeben. Dieses muss zu Beginn mindestens einmal durch einen Layout-Algorithmus (am besten Hierachisch), weil sonst alle Knoten übereinander liegen.

Mit einer Property-Datei kann man die Knoten noch automatisch einfärben, um bestimmte Knotentypen zu unterscheiden.

Den Quellcode gibts hier SpringDependencyGraphGenerator.

Mit dem yEd lassen sich mit dem fertigen Graphen auch noch weitere nützliche Dinge anstellen. So kann man z.B. ganz leicht Untergraphen erzeugen, die nur Vorgänger oder nur die Nachfolger eines Knotens zeigen.

Wie schlecht die Bilder mit STS werden können zeigt dieser Ausschnitt:

Einen Graphen der mit yEd layoutet wurde sieht man unten. Mit Hilfe der Vorgänger-Funktion sind in einem zweiten Bild nochmal die Abhängigkeiten einer DataSource herausgestellt.

Dieser Beitrag wurde unter Allgemein abgelegt und mit verschlagwortet. Setze ein Lesezeichen auf den Permalink.

9 Antworten auf Spring Dependency Graph mit yEd / Graphml

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *