Java Spring Framework, yazılım geliştirme sürecinde en çok kullanılan frameworklerden biridir. Spring, geliştiricilere birçok özellik sunar ve bu özellikler arasında Dependency Injection (Bağımlılık Enjeksiyonu) da yer almaktadır. Bu yazıda, Dependency Injection kavramını ayrıntılı bir şekilde açıklayacağız ve Spring Framework üzerinde nasıl kullanılabileceğine dair örnek kodlar vereceğiz.
Dependency Injection Nedir?
Dependency Injection (Bağımlılık Enjeksiyonu), nesneler arasındaki bağımlılıkların azaltılması için kullanılan bir tasarım desenidir. Bu desen, bir nesnenin ihtiyaç duyduğu diğer nesneleri, bu nesnelerin kendisine verilmesi yoluyla elde etmesini sağlar. Bu sayede, nesne oluşturma sürecinde daha az bağımlılık içeren, daha esnek ve daha sürdürülebilir bir kod tabanı oluşturmanızı sağlar.
Spring Framework ve Dependency Injection
Spring Framework, Dependency Injection kavramını uygulamanın temel prensiplerinden biri olarak kabul eder. Spring, nesneler arasındaki bağımlılıkları azaltmak için Dependency Injection kavramını kullanır. Bu sayede, yazılım geliştirme sürecinde daha az kod yazmanıza ve daha az hata yapmanıza olanak tanır.
Spring Framework, Dependency Injection kavramını uygulamak için iki yöntem sunar:
- Constructor Injection (Yapıcı Metot Enjeksiyonu)
- Setter Injection (Ayarlayıcı Metot Enjeksiyonu)
Constructor Injection (Yapıcı Metot Enjeksiyonu)
Constructor Injection, Dependency Injection kavramının bir diğer yöntemidir. Bu yöntemde, nesne oluşturma sırasında gerekli olan diğer nesneler, nesnenin yapıcı metoduna enjekte edilir. Bu sayede, nesneler arasındaki bağımlılıklar azaltılır.
Örnek Kod:
Aşağıdaki örnek kodda, bir “Customer” sınıfı ve “Order” sınıfı oluşturuyoruz. “Order” sınıfı, “Customer” sınıfına bağımlıdır. Bu bağımlılık, “Order” sınıfının yapıcı metodunda tanımlanmıştır.
public class Customer {
private String name;
private String address;
public Customer(String name, String address) {
this.name = name;
this.address = address;
}
}
public class Order {
private int orderId;
private Customer customer;
public Order(int orderId, Customer customer) {
this.orderId = orderId;
this.customer = customer;
}
}
Setter Injection (Ayarlayıcı Metot Enjeksiyonu)
Setter Injection, Dependency Injection kavramının bir diğer yöntemidir. Bu yöntemde, nesne oluşturulduktan sonra gerekli olan diğer nesneler, nesnenin özel bir metodu aracılığıyla enjekte edilir. Bu sayede, nesneler arasındaki bağımlılıklar azaltılır.
Örnek Kod:
Aşağıdaki örnek kodda, bir “Customer” sınıfı ve “Order” sınıfı oluşturuyoruz. “Order” sınıfı, “Customer” sınıfına bağımlıdır. Bu bağımlılık, “setCustomer” metodu aracılığıyla tanımlanmıştır.
public class Customer {
private String name;
private String address;
public void setName(String name) {
this.name = name;
}
public void setAddress(String address) {
this.address = address;
}
}
public class Order {
private int orderId;
private Customer customer;
public void setOrderId(int orderId) {
this.orderId = orderId;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
}