*256 Bit SSL Sertifikası * Full Mobil Uyumlu * Full SEO Uyumlu
İsterseniz Mobil Uygulama Seçeneğiyle
Spring Framework, bağımlılıkları enjekte etmek için kullanılan önde gelen teknolojilerden biridir. Başarılı bir bağımlılık enjeksiyonu, kodun daha ölçeklenebilir, bakımı daha kolay ve daha test edilebilir hale getirir. Bu nedenle, bu yazıda size Spring Framework'te dependency injection konusunu detaylı ve örneklerle anlatmaya çalışacağım.
Bağımlılık Enjeksiyonu Nedir?
Bağımlılık Enjeksiyonu (DI), bir nesne tarafından kullanılan diğer nesnelerin doğrudan oluşturulmasından ziyade başka bir kaynaktan sağlanmasıdır. Bu, nesne oluşturma sürecinde elastikiyet ve kolaylık hedeflenir. Bu, aynı zamanda nesneler arasındaki sıkı bağımlılıkların kırılmasını sağlar.
Spring Framework’te Dependency Injection
Spring Framework, Dependency Injection tekniğini kullanarak, hem bağımlılıkları yönetmek için bir mekanizma sağlar, hem de bağımlılıkların taşınabilirliğini sağlar. Bu durum gerektiğinde uygulama içinde farklı implementasyonlar sunarak yapısal olarak değişkenlik sağlar. Bu özellik Spring Framework’ü, ölçeklenebilir, bakımı kolay ve test edilebilir hale getirir.
Spring Framework’te, DI uygulamak için üç temel yol vardır: Setter Injection, Constructor Injection ve Field Injection.
Setter Injection
Setter Injection, bir nesne tarafından kullanılan diğer nesnelerin bir setter yöntemi aracılığıyla bağlanmasını sağlar. Bu, Spring Container tarafından gerçekleştirilir. Aşağıdaki örnekte, Ögrenci sınıfı ağırlık, boy ve isim özelliklerini içerir. Bunlara erişmek için setter yöntemleri tanımlanır:
public class Ogrenci {\n private String isim;\n private int boy;\n private int agirlik;
// getters and setters\n public String getIsim() {\n return isim;\n }
public void setIsim(String isim) {\n this.isim = isim;\n }
public int getBoy() {\n return boy;\n }
public void setBoy(int boy) {\n this.boy = boy;\n }
public int getAgirlik() {\n return agirlik;\n }
public void setAgirlik(int agirlik) {\n this.agirlik = agirlik;\n }\n}
Ogrenci sınıfını kullanan Öğretmen sınıfının bir örneği var. Bu sınıf, Ogrenci nesnesine Setter Injection yoluyla erişir:
public class Ogretmen {\n private Ogrenci ogrenci;
// setter method\n public void setOgrenci(Ogrenci ogrenci) {\n this.ogrenci = ogrenci;\n }\n}
Burada, Öğretmen sınıfı Ogrenci sınıfına bağımlıdır. Spring Framework’te, bu bağımlılığı yönetmek için bir Kongre yaptırılmalıdır.
Burada, Ogretmen sınıfı Ogrenci sınıfı için bir referansa sahaktır. Bu referansı Bean XML tanımına dahil etmek için kullanılır. Şimdi, Ogretmen sınıfı tarafından Ogrenci sınıfından erişilebilir:
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(beans.xml);\nOgretmen ogretmenBean = context.getBean(ogretmenBean, Ogretmen.class);\nOgrenci ogrenciBean = context.getBean(ogrenciBean, Ogrenci.class);\nogretmenBean.setOgrenci(ogrenciBean);
Constructor Injection
Constructor Injection bağımlılıkların örnek sırasında, örnek oluşturma zamanında enjekte edildiği bir bağımlılık enjeksiyon yöntemidir. Burada, Spring Container, nesneler oluşturulmadan önce, Constructor Injection yoluyla, nesnelerin selameti ve taşınabilirliği sağlar. Aşağıdaki örnek, Ogrenci sınıfı ve Ogrenci sınıfını kullanan Öğretmen sınıfını içerir:
public class Ogrenci {\n private String isim;\n private int boy;\n private int agirlik;
public Ogrenci(String isim, int boy, int agirlik) {\n this.isim = isim;\n this.boy = boy;\n this.agirlik = agirlik;\n }\n}
public class Ogretmen {\n private Ogrenci ogrenci;
public Ogretmen(Ogrenci ogrenci) {\n this.ogrenci = ogrenci;\n }\n}
Burada, Öğretmen sınıfı Ogrenci sınıfına bağımlıdır. Spring Framework’te Constructor Injection yapmak için Bean XML dosyasında aşağıdaki gibi tanımlanabilir:
Burada, Ogrenci nesnesi yaratılırken constructor’a verilecek argümanlar tanımlanmıştır. Ogretmen nesnesi yaratılırken ise, Ogretmen sınıfının constructor’ına referans aktarılır.
Son olarak, bu nesneleri kullanmak için bir ApplicationContext bulundurmalıyız:
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(beans.xml);\nOgretmen ogretmenBean = context.getBean(ogretmenBean, Ogretmen.class);\nOgrenci ogrenciBean = context.getBean(ogrenciBean, Ogrenci.class);
Field Injection
Field Injection, Spring Framework üzerinde en basit enjeksiyon tipidir. Field Injection, bir nesne tarafından kullanılan diğer nesnelerin doğrudan bir sınıf değişkenine atanmasını sağlar. Bu, Spring Container tarafından gerçekleştirilir. Aşağıdaki örnekte, Ogrenci sınıfı ağırlık, boy ve isim özelliklerini içerir:
public class Ogrenci {\n private String isim;\n private int boy;\n private int agirlik;\n}
Ogrenci sınıfını kullanan Öğretmen sınıfının bir örneği var. Bu sınıf, Ogrenci nesnesine Field Injection yoluyla erişir:
public class Ogretmen {\n @Autowired\n private Ogrenci ogrenci;\n}
Burada, Öğretmen sınıfı Ogrenci sınıfına bağımlıdır. Spring Framework'te, bu bağımlılığı yönetmek için bir Kongre yaptırılmalıdır.
Burada, yukarıdaki örnekte Ogrenci sınıfı Ogretmen sınıfı tarafından kullanılmaktadır ve @Autowired anotasyonu sayesinde otomatik olarak enjekte edilir. Bunun için, BaseController sınıfının Spring tarafından yönetildiğini belirtmek amacıyla @Component anotasyonu kullanılır.
@Component\npublic class Ogretmen {\n \n @Autowired\n private Ogrenci ogrenci;\n \n // Ogretmen metotları ve özellikleri\n}
xml dosyasındaki bean tanımı, bir interface (örnek olarak OgrenciServis) için yapıldığında, Servis tarafında tanımlı sınıf kullanılarak initialization sağlanmaktadır.
Son olarak, nesneleri kullanmak için bir ApplicationContext bulundurmalıyız:
ApplicationContext provider = new ClassPathXmlApplicationContext(spring.xml);\nOgretmen obj = (Ogretmen) provider.getBean(ogretmen);
Sonuç
Spring Framework’te dependency injection, kodun daha ölçeklenebilir, bakımı daha kolay ve daha test edilebilir hale getirir. Setter Injection, Constructor Injection ve Field Injection yoluyla kullanılan Dependency Injection yöntemlerini gördük. Spring Framework’te bağımlılık enjeksiyonunu kullanmak, uygulama geliştirme sürecini kolaylaştırır ve daha sağlıklı bir kod yazımını sağlar. Bu yazıda size, Spring Framework’te bağımlılık enjeksiyonu hakkında detaylı bilgi ve örnekler verdim. Umarım yararlı olur.
Spring Framework, bağımlılıkları enjekte etmek için kullanılan önde gelen teknolojilerden biridir. Başarılı bir bağımlılık enjeksiyonu, kodun daha ölçeklenebilir, bakımı daha kolay ve daha test edilebilir hale getirir. Bu nedenle, bu yazıda size Spring Framework'te dependency injection konusunu detaylı ve örneklerle anlatmaya çalışacağım.
Bağımlılık Enjeksiyonu Nedir?
Bağımlılık Enjeksiyonu (DI), bir nesne tarafından kullanılan diğer nesnelerin doğrudan oluşturulmasından ziyade başka bir kaynaktan sağlanmasıdır. Bu, nesne oluşturma sürecinde elastikiyet ve kolaylık hedeflenir. Bu, aynı zamanda nesneler arasındaki sıkı bağımlılıkların kırılmasını sağlar.
Spring Framework’te Dependency Injection
Spring Framework, Dependency Injection tekniğini kullanarak, hem bağımlılıkları yönetmek için bir mekanizma sağlar, hem de bağımlılıkların taşınabilirliğini sağlar. Bu durum gerektiğinde uygulama içinde farklı implementasyonlar sunarak yapısal olarak değişkenlik sağlar. Bu özellik Spring Framework’ü, ölçeklenebilir, bakımı kolay ve test edilebilir hale getirir.
Spring Framework’te, DI uygulamak için üç temel yol vardır: Setter Injection, Constructor Injection ve Field Injection.
Setter Injection
Setter Injection, bir nesne tarafından kullanılan diğer nesnelerin bir setter yöntemi aracılığıyla bağlanmasını sağlar. Bu, Spring Container tarafından gerçekleştirilir. Aşağıdaki örnekte, Ögrenci sınıfı ağırlık, boy ve isim özelliklerini içerir. Bunlara erişmek için setter yöntemleri tanımlanır:
public class Ogrenci {\n private String isim;\n private int boy;\n private int agirlik;
// getters and setters\n public String getIsim() {\n return isim;\n }
public void setIsim(String isim) {\n this.isim = isim;\n }
public int getBoy() {\n return boy;\n }
public void setBoy(int boy) {\n this.boy = boy;\n }
public int getAgirlik() {\n return agirlik;\n }
public void setAgirlik(int agirlik) {\n this.agirlik = agirlik;\n }\n}
Ogrenci sınıfını kullanan Öğretmen sınıfının bir örneği var. Bu sınıf, Ogrenci nesnesine Setter Injection yoluyla erişir:
public class Ogretmen {\n private Ogrenci ogrenci;
// setter method\n public void setOgrenci(Ogrenci ogrenci) {\n this.ogrenci = ogrenci;\n }\n}
Burada, Öğretmen sınıfı Ogrenci sınıfına bağımlıdır. Spring Framework’te, bu bağımlılığı yönetmek için bir Kongre yaptırılmalıdır.
Burada, Ogretmen sınıfı Ogrenci sınıfı için bir referansa sahaktır. Bu referansı Bean XML tanımına dahil etmek için kullanılır. Şimdi, Ogretmen sınıfı tarafından Ogrenci sınıfından erişilebilir:
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(beans.xml);\nOgretmen ogretmenBean = context.getBean(ogretmenBean, Ogretmen.class);\nOgrenci ogrenciBean = context.getBean(ogrenciBean, Ogrenci.class);\nogretmenBean.setOgrenci(ogrenciBean);
Constructor Injection
Constructor Injection bağımlılıkların örnek sırasında, örnek oluşturma zamanında enjekte edildiği bir bağımlılık enjeksiyon yöntemidir. Burada, Spring Container, nesneler oluşturulmadan önce, Constructor Injection yoluyla, nesnelerin selameti ve taşınabilirliği sağlar. Aşağıdaki örnek, Ogrenci sınıfı ve Ogrenci sınıfını kullanan Öğretmen sınıfını içerir:
public class Ogrenci {\n private String isim;\n private int boy;\n private int agirlik;
public Ogrenci(String isim, int boy, int agirlik) {\n this.isim = isim;\n this.boy = boy;\n this.agirlik = agirlik;\n }\n}
public class Ogretmen {\n private Ogrenci ogrenci;
public Ogretmen(Ogrenci ogrenci) {\n this.ogrenci = ogrenci;\n }\n}
Burada, Öğretmen sınıfı Ogrenci sınıfına bağımlıdır. Spring Framework’te Constructor Injection yapmak için Bean XML dosyasında aşağıdaki gibi tanımlanabilir:
Burada, Ogrenci nesnesi yaratılırken constructor’a verilecek argümanlar tanımlanmıştır. Ogretmen nesnesi yaratılırken ise, Ogretmen sınıfının constructor’ına referans aktarılır.
Son olarak, bu nesneleri kullanmak için bir ApplicationContext bulundurmalıyız:
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(beans.xml);\nOgretmen ogretmenBean = context.getBean(ogretmenBean, Ogretmen.class);\nOgrenci ogrenciBean = context.getBean(ogrenciBean, Ogrenci.class);
Field Injection
Field Injection, Spring Framework üzerinde en basit enjeksiyon tipidir. Field Injection, bir nesne tarafından kullanılan diğer nesnelerin doğrudan bir sınıf değişkenine atanmasını sağlar. Bu, Spring Container tarafından gerçekleştirilir. Aşağıdaki örnekte, Ogrenci sınıfı ağırlık, boy ve isim özelliklerini içerir:
public class Ogrenci {\n private String isim;\n private int boy;\n private int agirlik;\n}
Ogrenci sınıfını kullanan Öğretmen sınıfının bir örneği var. Bu sınıf, Ogrenci nesnesine Field Injection yoluyla erişir:
public class Ogretmen {\n @Autowired\n private Ogrenci ogrenci;\n}
Burada, Öğretmen sınıfı Ogrenci sınıfına bağımlıdır. Spring Framework'te, bu bağımlılığı yönetmek için bir Kongre yaptırılmalıdır.
Burada, yukarıdaki örnekte Ogrenci sınıfı Ogretmen sınıfı tarafından kullanılmaktadır ve @Autowired anotasyonu sayesinde otomatik olarak enjekte edilir. Bunun için, BaseController sınıfının Spring tarafından yönetildiğini belirtmek amacıyla @Component anotasyonu kullanılır.
@Component\npublic class Ogretmen {\n \n @Autowired\n private Ogrenci ogrenci;\n \n // Ogretmen metotları ve özellikleri\n}
xml dosyasındaki bean tanımı, bir interface (örnek olarak OgrenciServis) için yapıldığında, Servis tarafında tanımlı sınıf kullanılarak initialization sağlanmaktadır.
Son olarak, nesneleri kullanmak için bir ApplicationContext bulundurmalıyız:
ApplicationContext provider = new ClassPathXmlApplicationContext(spring.xml);\nOgretmen obj = (Ogretmen) provider.getBean(ogretmen);
Sonuç
Spring Framework’te dependency injection, kodun daha ölçeklenebilir, bakımı daha kolay ve daha test edilebilir hale getirir. Setter Injection, Constructor Injection ve Field Injection yoluyla kullanılan Dependency Injection yöntemlerini gördük. Spring Framework’te bağımlılık enjeksiyonunu kullanmak, uygulama geliştirme sürecini kolaylaştırır ve daha sağlıklı bir kod yazımını sağlar. Bu yazıda size, Spring Framework’te bağımlılık enjeksiyonu hakkında detaylı bilgi ve örnekler verdim. Umarım yararlı olur.
*256 Bit SSL Sertifikası * Full Mobil Uyumlu * Full SEO Uyumlu
İsterseniz Mobil Uygulama Seçeneğiyle