Dependency Injection (DI) – Spring Freamework Dersleri

Spring Core
Spring Dersleri

Spring Freamework‘ün önemli ve sıkça kullanacağımız özelliği ola Dependency Injection yani Bağımlılıkların Enjekte edilmesi özelliğinden bahsedeceğiz.

Yaptığımız projelerde oluşturduğumuz nesnelerin diğer nesneler ile etkileşimi ile bağımlılıklarını yönetebilmemizi sağlamaktadır. Nesneler arasında bağımlılıkları ne kadar esnek olursa sonradan yapacağımız eklemeler daha kolay olmaktadır.

Spring bize iki farklı Dependency Injection özelliği tanımlamaktadır.

  • Setter Injection
  • Constructor Injection

Setter Injection

Metodlar üzerinden injection işlemi yapılmaktadır. Örnek vermek gerekirse;

public class   Kisi {

    private String ad;
    private String soyad;

    public String getAd() {
        return ad;
    }

    public void setAd(String ad) {
        this.ad = ad;
    }

    public String getSoyad() {
        return soyad;
    }

    public void setSoyad(String soyad) {
        this.soyad = soyad;
    }

    @Override
    public String toString() {
        return "Kisi{" +
                "ad='" + ad + '\'' +
                ", soyad='" + soyad + '\'' +
                '}';
    }
}

Spring konfigürasyon dosyamızı tanımlayalım ve içerisine değelerimizi setter injection yöntemiyle atayalım.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd">

        <bean id="kisi" class="com.burakkutbay.model.Kisi">
            <property name="ad">
                <value>Burak</value>
            </property>
            <property name="soyad">
                <value>Kutbay</value>
            </property>
        </bean>
</beans>

Şimdi main classımızı yazalım.

public class Calistir {

    public static void main(String[] args) {

        ApplicationContext context =new ClassPathXmlApplicationContext("applicationContext.xml");
        Kisi kisi=context.getBean("kisi");
        kisi.toString();

    }
}

Çalıştırdığımızda ekrana xml dosyamızda verdiğimiz değerler konsol ekranında gözükecektir.

Constructor Injection

Yapılandırıcı metod üzerinden bağımlılıklarımızı nasıl yöneteceğimize bakalım.

public class   Kisi {

    private String ad;
    private String soyad;

    public Kisi(String ad, String soyad) {
        this.ad = ad;
        this.soyad = soyad;
    }

    @Override
    public String toString() {
        return "Kisi{" +
                "ad='" + ad + '\'' +
                ", soyad='" + soyad + '\'' +
                '}';
    }
}

Xml dosyamızda yapılandırıcı metod üzerinden değerlerimizi gönderiyoruz.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd">

        <bean id="kisi" class="com.burakkutbay.model.Kisi">
            <constructor-arg value="Burak"></constructor-arg>
            <constructor-arg value="Kutbay"></constructor-arg>          
        </bean>
</beans>

Programımızı çalıştırmak için main classımızı yazalım.

public class Calistir {

    public static void main(String[] args) {

        ApplicationContext context =new ClassPathXmlApplicationContext("applicationContext.xml");
        Kisi kisi=context.getBean("kisi");
        kisi.toString();

    }
}

İki yöntemle de değelerimizi yönetebiliyoruz. Spring ile bağımlılıkları yönetme işlemleri bu iki yöntemle yapılmaktadır.

Dependency Injection yöntemi ile Spring bizden aldığı değerleri gerekli alanlara eşleştirerek yönetebilmeyi sağlamaktadır. Genellikle değişken olabilecek değerlerin proje kodu içerisinden değil, xml dosyası üzerinden değiştirebilmek için kullanılmaktadır.
 

Önceki Ders: Spring ile Merhaba Dünya Örneği Spring Dersleri Sonraki Ders: Autowiring Nedir? Kullanımı

Leave a Reply

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Burak KUTBAY 2010 - 2019
%d blogcu bunu beğendi: