02_Spring_HelloWorld_DependencyInjection

Merhaba arkadaşlar, bu yazımda ilk spring projemizi oluşturacağız ve DI(Dependency Injection) kavramını inceleyeceğiz.

Dependency Injection(DI) Nedir Ve Çeşitleri Nelerdir?

İlişkili olan nesnelerin birbirleri arasındaki ilişkiyi daha iyi yönetmek için kullanılır. Yani daha açık bir tanım yapılmak istenirse: projeler büyüdüğünde yönetilmesi zorlaşır, projede yapılan küçük bir değişiklik projeyi çöpe çevirebilir çünkü yapılan değişiklik birden fazla nesneyi etkileyebilir. Bu etkilenmeyi en aza indirmek için DI kullanılır. DI iki şekilde uygulanır:

  • Constructor Injection(Constructor Based Dependency Injection)
  • Setter Injection(Setter Based Dependency Injection)

Spring Hello World

Eclipse IDE’mizde spring projesi başlatmak için File->New->Java Project diyerek proje başlatalım. Oluşturduğumuz projemize maven dependencies eklemek için projemize sağ tıklayarak Configure-> Convert To Maven Project diyerek projemizi maven projesine dönüştürelim ve ilk derste yazdığım dependencyleri ekleyelim.

1-)Constructor Injection

Address.java

 Person.java

Şimdi projemize sağ tıklayalım ve spring tools eklentisinden gelen bean.xml dosyasını projemize ekleyelim:

_002_application.xml

Person ve Address sınıflarımız bizim bean sınıflarımızdır. Person sınıfımızın yapısı Address nesnesini parametre olarak alıyor ve Address sınıfı ile ilişki oluşturuyor. _002_application.xml dosyamızda beanlerimiz tanımlanıyor.

Burada id özelliğine her beane ayrı değer veriliyor. Class özelliğine paketAdı.sınıfAdı şeklinde sınıfımız belirtiliyor.

Hangi bean tagları içerisinde tanımlanıyorsa o sınıf içerisindeki Address türündeki parametre alan yapıcıyı temsil eder.

Ref özelliği=>tanımlanan beanler arasından id ile sınıf referans gösterilir. Yani burada yapıcının parametresine hangi bean atanacaksa o belirtilmiştir.

Şimdi Test sınıfımızdaki nesneleri tanıyalım:

ApplicationContext Sınıfı         

ApplicationContext, uygulamaya konfigürasyon bilgileri saklamak için bir Spring uygulamasındaki merkezi arayüzdür. Çalışma zamanında salt okunurdur, ancak gerekirse uygulama tarafından desteklenip yeniden yüklenebilir. Bir dizi sınıf, çeşitli yapılandırma seçeneklerine ve uygulama türlerine izin vererek ApplicationContext arayüzünü uygular.

ApplicationContext Sınıfının Görevleri

  • Uygulama bileşenlerine erişim için Bean Factory yöntemleri
  • Dosya kaynaklarını genel bir şekilde yükleyebilme
  • Olayları kayıtlı dinleyicilere yayınlama yeteneği
  • Uluslararasılaştırmayı desteklemek için mesajları çözme yeteneği
  • Üst bağlamdan kalıtım sağlama.

Oluşturulan application.xml dosyamız tanımlanıyor ve projemize yükleniyor. Daha sonra Person sınıfından nesne üretiliyor ve getBean(“beanID”) metodu ile bean çağrılıyor ve nesnemize atanıyor. Bu şekilde görüldüğü gibi Person sınıfındaki parametreli yapıcı sayesinde Address sınıfı ile ilişki kurulmuş oldu.

2-)Setter Injection

Yukarıdaki sınıflar aynı şekilde tanımlanıyor. Sadece application.xml dosyamızı aşağıdaki gibi güncelliyoruz:

Burada <property> etiketlerimiz set metotlarımızıı temsil ediyor.

Name özelliği => Set metodunun aldığı parametrenin adını temsil eder. Bu uygulamada

Görüldüğü gibi set metodu kullanılarak DI yapılmış oldu. Spring Core framework de DI(Dependency Injection) yapmış olduk. Bu yazımı burada bitiriyorum diğer yazılarımda görüşmek üzere…

Print Friendly, PDF & Email

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.