Merih Forum Programlama ve yazılım algoritmalar Genel spring Dependency Injection (DI) – Spring Freamework

  • 0 Oy - 0 Ortalama
  • 1
  • 2
  • 3
  • 4
  • 5
Dependency Injection (DI) – Spring Freamework

 
#1

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/be...-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/be...-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.

kaynak



Bul
Alıntı


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Spring Restful Web Servis CRUD Uygulama Örneği efsane 0 2,552 09-06-2017, Saat: 20:38
Son Mesaj: efsane
  Spring Scheduler ile Zamanlandırılmış Görev Uygulaması efsane 0 2,254 09-06-2017, Saat: 20:35
Son Mesaj: efsane
  Spring Boot Merhaba Dünya Uygulaması efsane 0 2,380 09-06-2017, Saat: 20:33
Son Mesaj: efsane
  Spring Boot Projesi Oluşturma efsane 0 2,392 09-06-2017, Saat: 20:32
Son Mesaj: efsane
  Spring Boot Nedir? efsane 0 2,210 09-06-2017, Saat: 19:53
Son Mesaj: efsane

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


Bu konuyu görüntüleyen kullanıcı(lar):
1 Ziyaretçi

   
Türkçe Çeviri: Emre KRMN, Kodlayanlar MyBB, © 2002-2022 MyBB Group.  



Merih Forum® bilgi paylaşım platformu. 2015-∞ Tüm hakları saklıdır.