'da yöntem enjeksiyonu yerine getBean kullanımı Birden çok ekrana sahip bir uygulama var ve her ekran bir düğme ile seçiliyor. Her ekran oldukça ağır bileşenlere sahiptir, bu nedenle sadece aktif ekranın bellekte kalması önemlidir - tüm diğerleri çöp toplama için kullanılabilir olmalıdır.İlkbaharda
uygulama yapıştırıcı Spring kullanır ve şu anda() getBean kullanılarak ekranlar geçer:
//event handler for a specific button
public void actionPerformed(Event e) {
setScreen((Screen) applicationContext.getBean("screen1"));
}
"Ekran1" tuşuna basıldığında oluşturulur, böylece bir prototip fasulye, yeni bir ekran örneğidir. Ayrıca, setScreen(), uygulamada Ekrana referansın tutulduğu tek yerdir, böylece daha önce aktif olan ekran çöp toplama için kullanılabilir olacaktır. Bunu henüz test etmedim ama iyi çalışacağını umuyorum - burada roket bilimi yok!
Sorun şu ki: getBean() 'ın neden hatalı kabul edildiği konusunda this page okunduktan sonra - getBean() üzerindeki bağımlılığı kaldırırken aynı sonuçları elde etmek için daha idiomatik bir yol olup olmadığını merak ediyorum.
Metot enjeksiyonuna baktım ve az fayda ile karmaşıklığı tanıtmamı bekliyor. Başka bir kavram öğrenmek, daha fazla sihir, CGLIB'a bağımlılık eklemek, vb. İlkbaharda bağımlılığı gerçekten kaldırmak istiyorsam, getBean() yöntemini ortaya çıkaran bir arabirimi sunabilirim.
GetBean() yöntemini ve yöntem enjeksiyonu benim durumumda mı yoksa bir şey mi kaçırdım?
Ve eğer öyleyse, getBean() gerçekten çok mu kötü?
Çözümünüzde, getbean() fabrika create() yönteminde çağrılır, değil mi? –
Tam olarak değil. Bu, bir fabrika yöntemiyle değiştirilir, ancak yukarıdaki arabirimi bir uygulama bağlamıyla karşılaştırmaktan çok daha kolaydır. Ayrıca takılabilir. Sonuçta, Spring'in yöntem enjeksiyonu http://static.springsource.org/spring/docs/2.5'in biraz daha basit bir uygulamasıdır.x/reference/beans.html # fasulye-fabrika-arama-yöntem-enjeksiyon – cletus
Görüyorum, ancak factory() yöntemi onun Screen örneğini nereden alıyor? –