1

Bir Rest API'si olarak görev yapan bir Spring 3 projem var ve günlüğe kaydetme amacıyla yönetilmeyen bir sınıfa bağladığım bir bordürünü bağlamak istedim.Spring 3, yönetilmeyen sınıflarda fasulye enjekte etmek için yapılandırılabilir ek açıklama riskleri var mı?

Birçok farklı şeyi denedikten sonra, yönetilmeyen sınıfımı @Configurable ek açıklamalarıyla işaretlemiştim.

gibi:

@Configurable 
public class ClassNotManagedBySpring { 
    @Autowired 
    @Qualifier("myBean") 
    private MyBean myBean; 
} 

@Service("myBean") 
public class MyBean { 
    @Autowired 
    @Qualifier("someOtherBean") 
    private SomeOtherBean someOtherBean; 
} 

Ve sonra benim beans.xml içinde:

<context:spring-configured/> 

Yani şimdi en, 3'ü hariç tüm benzer bir şey bir 6 sınıflarını olduğunu ClassNotManagedBySpring.java diyelim İlkbaharda yönetiliyor çünkü @Component ek açıklamasına sahipler.

Ancak, bu sınıflardan 6 tanesinin hepsinin @AutowireMyBean.java'a ihtiyacı vardır ve yalnızca bazılarının @Configurable ek açıklamalarına gereksinimi vardır.

Not: Daha önce başka bir amaç için daha önce bu uygulamada AspectJ'i kullanmıştım.

Yay uygulamamdaki tüm ani kablolama yaylı bağımlılıkların yönetilmeyen sınıflara bu şekilde nasıl bir risk getirdiğini bilmek istiyorum.

Performans sorunları olabilir mi? Çalışma zamanında hataların riskleri?

Bu, bir yay yönetimli kuru fasulye ile yönetilmeyen bir sınıfa bağlanmanın en iyi yolu değilse, nedir?

cevap

1

@Configurable'u sorunsuz bir şekilde kullanıyorum, Spring tarafından yapılandırılan uygulama örneği çekirdeklerine ihtiyacınız varsa çok kolay bir çözüm. Kullanım durumlarımın tümü UI katmanındaydı. Yapıcıda zaten otomatik olarak ayarlanmış değerler gerektiğinde de @Configurable(preConstruction = true)'u kullandım. Tabii ki, milyonlarca @Configurable nesnesi yaparsanız, bu bir performans sorunu olabilir, aksi takdirde bu konuda çok fazla endişelenmeyeceğim. Sahip olduğum tek küçük estetik problem, Eclipse bana @Configurable sınıflarını genişleten sınıf tanımlarında bazı kırmızı alt çizgiler vererek, SomeClass sınıfının hiyerarşisi, tutarsızlıktan şikayet ediyordu, ancak yine de derlemişti, Sorunlar görünümünde veya çalışma zamanında herhangi bir hata bulunamadı.

+0

Kapta kurulan çekirdeklerin yanı sıra, ilkbaharda yönetilmeyen sınıflarda aynı yaylı fasulyeyi kullanmak istersem ne olur? –

+0

Bu, 'Yapılandırılabilir' işlevini kullanmaktır. –

+0

Hmm, şimdi bunu yaptığımdan beri, yapılandırılmış otomatik kablo olarak benim açıklamam olarak eklediğim sınıflar benim bağımlılığım iyi, ve sınıflar şu şekilde açıklamalı: @Configurable (autowire = Autowire.BY_TYPE, preConstruction = true), ancak şimdi diğer sınıflarımda Yapılandırılabilir ve bahar tarafından fasulye olarak yönetilen yok, aşağıdakileri olsun: –