Inversion of Control (IoC)
Inversion of Control, bir nesnenin veya bir programın bölümlerinin kontrolünü ele almak yerine dışarıdan bir container veya framework tarafından sağlanan bir prensiptir. Bu prensip, yazılımın daha modüler ve esnek olmasını sağlar ve nesneler arasındaki bağımlılıkları azaltır. Genellikle nesne yönelimli programlama bağlamında kullanılır.
IoC, bir frameworkün bir programın akışını kontrol altına almasına ve özel kodumuza çağrı yapmasına olanak tanır. Bunu sağlamak için frameworkler, yerleşik ek davranışlarla birlikte soyutlamalar kullanır. Kendi davranışımızı eklemek istiyorsak, frameworkün sınıflarını genişletmemiz veya kendi sınıflarımızı eklentilememiz gerekir.
Nesneler arasındaki bağımlılıkları ortadan kaldıran ve bunun yerine soyutlamalara dayanan bir tasarım desenidir. Inversion of Control, yazılım bileşenlerini sorumluluklardan ayırmaya yönelik bir teknik olan Dependency Injection yoluyla elde edilebilir. Dependency Injection, bir sınıfın gerekli bağımlılıklarını dışarıdan enjekte etme yöntemini ifade eder. Bu da IoC prensibinin bir uygulama şeklidir ve IoC'nin bir sonucu olarak kullanılır.
IoC'nin avantajları arasında kodun daha iyi organizasyonu, test edilebilirlik ve yazılım bileşenlerinin daha kolay değiştirilebilir olması yer alır. Bu prensip, bir programın daha fazla modüler ve bakımı daha kolay hale getiren önemli bir yazılım mühendisliği ilkesidir.
Dependency Injection (DI)
Dependency Injection, bir objenin ihtiyaç duyduğu objeleri sağlar. Bağımlılıklar kendilerini oluşturmak yerine bazı dış araçlarla enjekte edilirler. Bu, kodun daha az bağımlı, daha modüler ve daha test edilebilir olmasını sağlar. Bu tasarım deseni, Inversion of Control (IoC) prensibinin bir uygulaması olarak da kabul edilir, çünkü bağımlılıkların kontrolünü sınıftan başka bir yere (çoğunlukla bir DI konteynerine veya konfigürasyon dosyasına) devreder.
Spring Boot'ta Dependency Injection için kullanılan yöntemler:
- Constructor Injection
- Setter Injection
- Field Injection
- Method Injection
Top comments (0)