Dependency Injection (DI) – Spring Freamework 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ı |
No Comment! Be the first one.