Ansatz # 1:
Eine Möglichkeit ist ein Aspekt, mit einem Punkt-cut Ausdruck zu erzeugen, die eine beliebige Methode, um diese Annotation mit einstimmt.
Ihr Aspekt wird dann:
- den Eigenschaftswert in der Anmerkung lesen
- den gewünschten Wert ein inject es in die Klasse nachschlagen.
AOP Kickstart
Hier ist ein Leitfaden für die ersten Schritte mit AOP im Frühjahr
http://www.tutorialspoint.com/spring/aop_with_spring.htm
Joinpoint passend
Hier ist eine Referenz, die beschreibt, wie einen Join-Punkt, auf Anmerkungen Spiele erstellen: http://eclipse.org/aspectj/doc/next/adk15notebook/annotations-pointcuts-and-advice.html
Ansatz # 2:
Eine andere Möglichkeit, ein BeanFactoryPostProcessor verwenden - das ist im Wesentlichen, wie ein PropertyPlaceholderConfigurer funktioniert.
- Es wird Ihre Bean-Definitionen betrachten und die zugrunde liegende Klasse abrufen.
- Es wird dann nach der Anmerkung in der Klasse mit Reflexion suchen.
- Es aktualisiert die Bean-Definition so, dass die Eigenschaft gemäß dem Wert in die Annotation eingefügt wird.
. . tatsächlich denke ich, Ansatz Nr. 2 klingt mehr nach dem, was Sie wollen - die gesamte Verarbeitung geschieht auf "Start-up". . . (In der Tat ändern Sie die Bohne Rezepte schon vor dem Start). . Wenn Sie jedoch AOP verwenden, würden Sie Methodenaufrufe abfangen, die für Sie zu spät sein könnten.
Namespace Handler
Wenn Sie wollten Sie könnten sogar Ihre eigenen Frühling Namespace-Handler schalten Sie den Postprozessor in einer prägnanten Art und Weise erstellen.ZB:
<myApp:injectFromDb />
als Alternative zu:
<bean class="MyDatabaseLookupProcessorImpl etc, etc. />
Update: Ansatz # 3
Ab Frühling 3.1 gibt es auch die PropertySourcesPlaceholderConfigurer, die für Sie die meisten der Sanitär bieten wird , damit Sie dies mit weniger Code erreichen können.
Ich denke, Dies ist eine weitere Option: Verwenden Sie Spring 3.1 PropertySourcesPlaceholderConfigurer und fügen Sie eine neue PropertySource für meine Datenbankeigenschaften hinzu: http://spring.io/blog/2011/02/15/spring-3-1-m1-unified-property-management/ – DarVar