SORU
30 HAZİRAN 2009, Salı


Tam olarak kaynak nedir?

Bahar hakkında çok şey duydum, insanlar Bahar web geliştirme için iyi bir çerçeve olan tüm web üzerinden söylüyor. Ama tam olarak ne için gerekli? Nasıl Web-Java uygulama geliştirme için kullanabilir miyim? örnekler değil, değil mi?

CEVAP
30 HAZİRAN 2009, Salı


Temelde Bahar çok ayrılmış sistemleri oluşturmak için izin bir desen olan için bir çerçeve. Sana en basit Açıklaması (Bu kısa bir cevap değil) deneyeceğim.

Sorun

Örneğin, sistem kullanıcıları listesi ve arayüzü UserLister adlı bildirin böylece ihtiyacınız olduğunu varsayalım:

public interface UserLister {
    List<User> getUsers();
}

Ve belki bir uygulama tüm kullanıcılar için bir veritabanı erişim:

public class UserListerDB implements UserLister {
    public List<User> getUsers() {
        // DB access code here
    }
}

Sizin görüşünüze göre bir örnek (sadece bir örnek, unutma) erişim gerekir:

public class SomeView {
    private UserLister userLister;

    public void render() {
        List<User> users = userLister.getUsers();
        view.render(users);
    }
}

Yukarıdaki kod değişken userLister başlatılmış gerekmez unutmayın. Ne yapmalıyız? Eğer ben açıkça böyle bir nesnenin örneğini ise:

UserLister userLister = new UserListerDB();

...DB erişen sınıf benim uygulama ile görüntüleyebilirsiniz birkaç ederim. Eğer virgülle ayrılmış bir dosya kullanıcı listesini alır başka bir DB uygulaması (unutmayın, bir örnek) geçmek istersem ne olur? Bu durumda benim kodu için tekrar ve son satırı değiştirmek istiyorum:

UserLister userLister = new UserListerCommaSeparatedFile();

Bu da, bu gibi küçük bir program... görünümleri yüzlerce bir programda Ne olacağını ve iş sınıfları da benzer sayıda sorun var. Bakımı bir kabusa dönüşür!

Bahar (Bağımlılık Enjeksiyon) yaklaşım

Bahar ne yaparTelsınıflar ile bir XML dosyası, tüm nesneleri ve Bahar tarafından örneği başlatılır bu yolu kullanarakenjektedoğru yerlere (sunucu uygulamalarına, Web Çerçeveleri, İş sınıfları, DAOs, vs, vs, vs...).

Geri Bahar örnek, biz sadece userLister alan için bir kanepe var ve bu gibi bir XML olması gerekir:

<bean id="userLister" class="UserListerDB" />

<bean class="SomeView">
    <property name="userLister" ref="userLister" />
</bean>

Bu görünüm oluşturulduğundasihirli bir şekildeUserLister bir iş için hazır olacak.

List<User> users = userLister.getUsers();  // This will actually work
                                           // without adding any line of code

Harika! Değil mi?

  • Eğer UserLister arayüzü başka bir uygulama kullanmak istiyorsanız, ne?Sadece XML değiştirmek
  • Eğer UserLister bir uygulama hazır yok eğer doğru değilse ne?UserLister zamansal sahte bir uygulama programı ve görünüm gelişimi kolaylaştırmak
  • Eğer Bahar artık kullanmak istemiyorum eğer doğru değilse ne?Onu kullanmayın! Uygulamanız için birleştiğinde değil. Inversion of Control şöyle diyor: "bu çerçeve, çerçeve kontrolleri uygulama kontrolleri".

Orada bazı diğer seçenekler için Bağımlılık Enjeksiyon oralarda, bence vardır yapılan Bahar çok ünlü hem sadeliği, zerafeti ve istikrarı olan adamlardan SpringSource var programlanmış birçok POJOs yardım için entegre Yay ile birçok ortak çerçeveler olmadan müdahaleci uygulama. Ayrıca Bahar Spring MVC, Spring WebFlow, Bahar Güvenlik ve etceteras bu çooook uzun liste daha böyle birçok güzel projeleri var.

Bu yardımcı olur umarım. Her neyse, bu beni daha iyi yapıyor, çünkü Kontrol Martin Fowler's article Bağımlılık Enjeksiyon ve Ters okumaya teşvik ediyorum.Temel anlayış sonra Spring Documentation için bir göz atınbenim görüşüme göreeskidenen iyi Bahar kitabı hiç.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Justin Schenck

    Justin Schen

    24 Kasım 2006
  • Living Waters

    Living Water

    9 AĞUSTOS 2006
  • Wronchi Animation

    Wronchi Anim

    9 Mayıs 2011