Annotations selbst erstellen und auswerten

WeirdAl

Bekanntes Mitglied
Hallo zusammen,
Ich möchte, wenn ich meine Appserver starte, einen Art Loader benutzen, der bestimmte Configklassen einer Klasse A hinzufügt.
Ich hatte erst daran gedacht in der Loaderklasse alle erstellten Configklassen einzeln der Klasse A mit A.add(...) hinzuzufügen. Wenn ich jedoch irgendwann später eine neue Configklasse erstelle, dann müsste ich immer in diesen Loader gehen und nochmal ein A.add(...) hinzufügen.

Dann habe ich mich an Annotations erinnert. Bislang kenne ich die nur von @Override her und frage mich jetzt, ob ich die für mein oben geschildertes "Problem" nutzen könnte. Meine Idee hier: Ich schreibe vor die Klassendeklaration einer Configklasse @LoadConfig("true") und mein Loader findet diese Configklasse dann ganz automatisch (per Reflexion(?)). Ist sowas machbar? Und falls ja, habt ihr evtl. einen Link zu einem Tutorial?

Cu
Alex
 
Wie kommt es denn dazu, dass der Loader die Config-Klassen lädt? Kennt er sie direkt (gibt es also im Code des Loaders Referenzen auf die Config Klassen), oder ist das eine Art Plugin-Mechanismus, bei der der Loader alles lädt, was z.B. in einem bestimmten Verzeichnis steht?
 
Im Moment sagt man im Loader "per Hand" lade mir die Configklasse in Klasse A. D.h. man hat eine Reihe von einfachen

A.add(config1)
A.add(config2)
usw.

im Loader. Das würde ich mit den Annotations gerne vermeiden
 
Per Reflexion annotierte Klassen zu finden, stelle ich mir schwierig vor, weil das bedeutet, dass du irgendwie alle Klassen im Classpath durchgehen müßtest (außer man macht vielleicht irgendwelche Schweinereien mit dem Classloader).

Mit AOP ist das jedenfalls kein Problem, mit AspectJ kann man problemlos auf annotierte Klassen zugreifen. Ebenfalls möglich könnte eine Lösung mithilfe des dem JDK beiliegenden Tools APT (Annotation Processing Tool) sein, eine ausführliche Doku dazu müsste sich im Verzeichnis /docs/technotes/guides/apt deiner lokalen JDK-Installation befinden.
 
Ok ich werde mir das mal anschauen. Mit AOP habe ich mich bislang auch noch nie beschäftigt. Wenn das damit dann geht, dann wäre es ein guter Zeitpunkt sich das mal anzusehen 🙂

Danke 🙂
 

Neue Themen


Zurück
Oben