2012-11-26 13 views
30

In meiner Anwendung verwende ich mehrere profiles, um bestimmte Beans für autowiring geeignet zu machen. Was ich vermisse, ist die Möglichkeit, eine Bean zum Autowiring zu berechtigen, wenn ein bestimmtes Profil NICHT aktiv ist.Einschließlich der Bean-Definition, wenn ein Profil NICHT aktiv ist

Der beste Weg, es zu tun, dass ich darüber nachgedacht, ist wie folgt:

  1. Nehmen wir an, wir eine Liste aller möglichen Profile haben, zum Beispiel {A B C D}.
  2. Für die bestimmte Ausführung aktive Profile sind {A, C}.
  3. Ich mache künstliche Profile für alle möglichen Profile, die nicht aktiv sind. Im Beispielfall würde ich {not_B, not_D} Profile erstellen.
  4. Die Bohnen möchte ich aktiv basierend auf nicht aktiven Profil X Ich mache aktiv für Profil not_X. In meinem Fall, wenn ich eine Bohne in Frage zu kommen für autowiring wenn Profil B nicht aktiv ist, wollte würde ich sie @Profile("not_B")

Diese Lösung erfordert jedoch ein up-front Wissen über alle möglichen Profile mit Anmerkungen versehen.

Können Sie sich eine bessere Lösung vorstellen?

Antwort

32

Sie können einen nicht (!) Operator verwenden ... aber Sie müssen Spring 3.2 M1 verwenden.

Siehe Änderung hier angekündigt: http://www.springsource.org/node/3563

Die begehen hier: https://github.com/SpringSource/spring-framework/commit/bcd44f3798ed06c0704d2a3564b8a9735e747e87

Ausgabe: https://jira.springsource.org/browse/SPR-8728

Wenn Sie ein Upgrade 3.2 zum Frühling für Ihr Projekt nicht möglich ist, würde ich empfehlen, nicht mit den @Profile-Ansatz und stellen Sie sicher, dass die Bean nicht in Ihrer Spring-Konfiguration erstellt wird.

+0

Das wäre großartig, aber Frühling 3.2 ist jetzt in RC1, also ist es keine Option für mich. – ShyJ

+0

Siehe meine Änderung der Post. Ich würde empfehlen, nicht mit @Profile dann zu initialisieren und dies in Spring-Konfiguration zu behandeln. – aweigold

+0

@Shyj Dachte darüber nach (wie die Konfiguration des Klassenpfad-Scanners mit Ausschluss), aber das scheint einfach nicht so gut wie Profile zu sein ... – ShyJ

Verwandte Themen