2012-11-26 18 views
30

Uygulamamda, bazı çekirdeklerin otomatik kablolama için uygun hale getirilmesi amacıyla birkaç profiles kullanıyorum. Eksik olan şey, belirli bir profilin aktif OLMADIĞI durumlarda otomatik kahve çekmeye uygun bir fasulye yapma olasılığıdır.Bir profil etkin değilken bean tanımı da dahil olmak üzere

düşündüğüm bunu yapmanın en iyi yolu şu şekildedir:

  1. Hepimizin olası profilleri, örneğin bir listesi var varsayalım {A, B, C, D}.
  2. Belirli bir yürütme için etkin olan profiller şunlardır: {A, C}.
  3. Yaptığım şey, etkin olmayan tüm olası profiller için yapay profiller oluşturmak. Örnek durumda, {not_B, not_D} profilleri oluşturacağım.
  4. Fasulye Aktif değil aktif olarak aktif olmak istiyorum X Profil not_X için aktif hale getiriyorum. Ben profil B aktif değilken Autowiring alabilmek için bir fasulye isteseydi benim durumumda, bu çözüm ancak tüm olası profilleri hakkında bir yukarı ön bilgi gerektirir onlara @Profile("not_B")

açıklama olacaktır.

Daha iyi bir çözüm bulabilir misiniz?

cevap

32

Bir (!) Operatörünü kullanamazsınız ... ancak Spring 3.2 M1'i kullanmanız gerekir.

Bkz değişim burada açıkladı: http://www.springsource.org/node/3563

taahhüt edilir burada: https://github.com/SpringSource/spring-framework/commit/bcd44f3798ed06c0704d2a3564b8a9735e747e87

Sayı: 3.2 Bahar yükseltme https://jira.springsource.org/browse/SPR-8728

Eğer projeniz için mümkün değil, ben kullanılmaması önerilir @Profile yaklaşımı ve Bean'in Spring konfigürasyonunuzda oluşturulmadığından emin olun.

+0

Bu harika olurdu, ancak Spring 3.2 şu anda RC1'de, bu yüzden benim için bir seçenek değil. – ShyJ

+0

Yayında yaptığım değişikliği görün. Daha sonra @Profile ile başlatmamanızı ve bunu Bahar yapılandırmasında kullanmamanızı tavsiye ederim. – aweigold

+0

@Shyj Bu konuda da düşünmüştüm (sınıf yol tarayıcıyı dışarıda bırakarak yapılandırmak gibi), ancak bu profiller kadar güzel görünmüyor ... – ShyJ

İlgili konular