SORU
11 Mart 2009, ÇARŞAMBA


Bahar @Autowired kullanımı

@Bahar tarafından çevrili olacak bir sınıfta Autowired kullanmanın artıları ve eksileri nelerdir?

Sadece netleştirmek için, özellikle hakkında @Autowired açıklama, otomatik kablo XML konuşuyorum.

Ben muhtemelen sadece anlamıyorum, ama beni neredeyse gibi bir anti-desen - derslere başlamak farkında olduklarına bağlı bir Dİ çerçevesinde yerine sadece POJOs. Belki de ceza için bir obur değilim ama fasulye için harici bir XML config olması hoşuma gidiyor, kablolu ve nerede olduğunu tam olarak biliyorum çok açık bir bağlantı var, ben gibi.

CEVAP
11 Mart 2009, ÇARŞAMBA


Uzun bir süre için bir "xml dosyaları gibi hepimiz kullanırdı." merkezi, Bildirge, konfigürasyona sahip bir değer olduğuna inandım Sonra dosyalarında şeyler çoğu olmadığının farkına vardımyapılandırma- hiçbir yerde kalkınma sonra, hiç değişmedi. Sonra da "merkezi, yalnızca oldukça küçük sistemler içinde değer - sadece küçük sistemler" hiç bir yapılandırma dosyası grok yapabilir misin farkına vardımbir bütün olarak. Ve gerçekten aynı "" çoğunlukla kod bağımlılıkları tarafından çoğaltılır? kabloları bir bütün olarak kablolama, anlayış değeri nedir Tuttum tek şey hala tür-bildirime dayanan meta-veri (açıklamalar). Buaslaçalışma zamanında değiştirmek ve onlarasla< . em ^/"yapılandırma" birileri kodun içinde tutmak iyi olduğunu düşünüyorum bu yüzden anında değişiklik olacak veriler.

Otomatik kablo tam elimden geldiğince kullanıyorum. Ben onu seviyorum. Silah noktada tehdit olmadığı sürece tarzı eski bahar için geri dönmeyeceğim. Tam @Autowired tercih sebebim zamanla değişti.

Şimdi autowiring kullanarak en önemli nedeni izlemek için sisteminizde daha az bir soyutlama olduğunu düşünüyorum. "Bean adı" etkili gitti. Bean adını sadece xml sayesinde var çıkıyor. Soyut indirections tam bir katman yani fasulye-adı Tel nokta ("" içine fasulye "") bara gitmiş. foo Şimdi ben Tel "Fon" benim fasulye arayüzüne doğrudan ve uygulama çalışma zamanı tarafından seçilen profil. Bu bana verirkod ile çalışırbağımlılıkları ve Uygulamaları İzleme. Benim kod autowired bir bağımlılık görünce sadece "uygulama" benim IDE anahtar ve gelir bilinen uygulamalar listesi. gidin basın edebilirim Çoğu durumda sadece tek bir uygulama var ve bu sınıfa ben normalim. Bu çok daha basit olamaz, ve her zaman bilirimtam olarakne uygulaması (bakış açınızı nasıl değiştirir tersi xml kablo ile gerçeğe daha yakın olduğunu iddia ediyorum - komik!) kullanılıyor

Şimdi sadece basit bir katman var, ama bizim sistemlere eklenecek soyutlama her katmanı olduğunu söyleyebilirizartırınkarmaşıklığı. Gerçekten xml şimdiye kadar beraber çalıştığım herhangi bir sistem için gerçek bir katma değer olduğunu sanmıyorum.

Çalışma şimdiye kadar bir çok sistem varbirüretim çalışma zamanı ortamı yapılandırma. Test için diğer yapılandırmaları ve benzeri olabilir.

Tam autowiring olduğunu ruby-on-raylar bahar söyleyebilirim: çoğu durumlarda kullanmak için takip normal ve yaygın bir kullanım şekli yok olduğu görüşünü benimser. XML yapılandırma ileizin verirMayıs/tutarlı/tutarsız yapılandırma kullanımı bir çok amaçlı olmayabilir. Çok xml yapılandırma denize tutarsızlıklar birlikte kod refactored mu ? ile gördüm Düşünce değil. Bu değişimler, bir anlamı var mı? Genellikle değil.

Oysa biz, bizim yapılandırma elemelerinde kullanın, ve diğer şekillerde bu durumları çözmek için bulundu. Bu açık bir "dezavantaj" biz karşılaşma: ettik biraz değişmiş bir şekilde yapmak için kod etkileşim daha düzgün ile autowiring: Bir müşteri depo artık uygulayan genel Repository<Customer> arayüz ama biz bir arayüz CustomerRepository uzanır Repository<Customer>. Bazen sınıflara gelince de bir iki numara var. Ama genellikle sadece her zaman daha iyi bir çözümdür neredeyse benim kadar güçlü yazarak, işaret ediyor.

Ama evet, çoğunlukla bahar yapar Dİ belirli bir stil için çalışıyorsun. Biz bile yapmak kamu belirleyiciler bağımlılıklarını artık (diye münakaşa ediyoruz 1 saklama/bilgi gizleme bölümü) hala bazı xml Sistemimizi, ama xml temeldesadeceanomaliler içerir. Tam autowiring güzel xml ile entegre.

Tek şeye ihtiyacımız var şu an için @Component, @Autowired ve sonuna eklenmek üzere bir genel amaçlı (gibi genel amaçlı-250), yok kravat ile bahar. Bu şeyler geçmiş oluyor yoludur (akla java.util.concurrent şeyler springs), eğer bu bir daha olursa tamamen şaşırmam yani.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Charles Nesson

    Charles Ness

    27 NİSAN 2006
  • discokatze

    discokatze

    23 EYLÜL 2009
  • DJPixcell

    DJPixcell

    20 NİSAN 2007