logo

İlkbaharda Bağımlılık Enjeksiyonu

  1. İlkbaharda Bağımlılık Enjeksiyonu
  2. Bağımlılık Araması
  3. Bağımlılık Enjeksiyonu

Bağımlılık Enjeksiyonu (DI), uygulamayı yönetmeyi ve test etmeyi kolaylaştıracak şekilde programlama kodundaki bağımlılığı ortadan kaldıran bir tasarım modelidir. Dependency Injection, programlama kodumuzun gevşek bir şekilde bağlı olmasını sağlar. DI'yi daha iyi anlamak için önce Bağımlılık Aramasını (DL) anlayalım:

Bağımlılık Araması

Bağımlılık Araması, talebin ardından kaynağı aldığımız bir yaklaşımdır. Örneğin kaynağı almanın çeşitli yolları olabilir:

 A obj = new AImpl(); 

Bu şekilde kaynağı (A sınıfının örneğini) doğrudan new anahtar kelimesiyle alırız. Başka bir yol da fabrika yöntemidir:

 A obj = A.getA(); 

Bu şekilde, statik fabrika yöntemi getA()'yı çağırarak kaynağı (A sınıfının örneğini) elde ederiz.

Alternatif olarak, kaynağı JNDI (Java Adlandırma Dizini Arayüzü) aracılığıyla şu şekilde alabiliriz:

 Context ctx = new InitialContext(); Context environmentCtx = (Context) ctx.lookup('java:comp/env'); A obj = (A)environmentCtx.lookup('A'); 

Kaynağı elde etmek için kaynağı elde etmenin çeşitli yolları olabilir. Bu yaklaşımdaki sorunu görelim.

Bağımlılık Arama Sorunları

Bağımlılık aramada esas olarak iki sorun vardır.

    Sıkı bağlamaBağımlılık arama yaklaşımı kodu sıkı bir şekilde birleştirir. Kaynak değiştirilirse kodda birçok değişiklik yapmamız gerekir.Test etmek kolay değilBu yaklaşım, özellikle kara kutu testinde uygulamayı test ederken birçok sorun yaratmaktadır.

Bağımlılık Enjeksiyonu

Bağımlılık Enjeksiyonu, programların bağımlılığını ortadan kaldıran bir tasarım modelidir. Böyle bir durumda bilgiyi XML dosyası gibi harici bir kaynaktan sağlıyoruz. Kodumuzun gevşek bir şekilde bağlanmasını ve test edilmesini kolaylaştırır. Bu durumda kodu şu şekilde yazıyoruz:

 class Employee{ Address address; Employee(Address address){ this.address=address; } public void setAddress(Address address){ this.address=address; } } 

Böyle bir durumda Adres sınıfının örneği, XML dosyası gibi harici bir kaynaktan ya yapıcı ya da ayarlayıcı yöntemle sağlanır.

Spring çerçevesinde Bağımlılık Enjeksiyonu gerçekleştirmenin iki yolu

Spring çerçevesi bağımlılığı enjekte etmenin iki yolunu sunar

  • Yapıcıya göre
  • Setter yöntemiyle

Spring Dependency Injection'da gelecek konular

Yapıcıya göre bağımlılık enjeksiyonu

Yapıcıya göre bağımlılığı nasıl enjekte edebileceğimizi görelim.


Ayarlayıcı yöntemiyle Bağımlılık Enjeksiyonu

Bakalım setter metodu ile bağımlılığı nasıl enjekte edebileceğimizi görelim.