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

  • Toplam: 0 Oy - Ortalama: 0
  • 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/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.

kaynak



Ara
Cevapla


[-]
Hızlı Cevap

İnsan Doğrulama:
Aşağıda görünen onay kutusunu işaretleyiniz. Bu işlem otomatik spam kayıtları önlemek için kullanılır.

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Spring Restful Web Servis CRUD Uygulama Örneği efsane 0 2,058 09-06-2017, Saat: 19:38
Son Yorum: efsane
  Spring Scheduler ile Zamanlandırılmış Görev Uygulaması efsane 0 1,783 09-06-2017, Saat: 19:35
Son Yorum: efsane
  Spring Boot Merhaba Dünya Uygulaması efsane 0 1,939 09-06-2017, Saat: 19:33
Son Yorum: efsane
  Spring Boot Projesi Oluşturma efsane 0 1,942 09-06-2017, Saat: 19:32
Son Yorum: efsane
  Spring Boot Nedir? efsane 0 1,767 09-06-2017, Saat: 18:53
Son Yorum: efsane

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


Konuyu Okuyanlar:
1 Ziyaretçi

   
Türkçe Çeviri: MCTR, Forum Yazılımı: MyBB, © 2002-2020 MyBB Group.  



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