Spring Core – Berkay GÜRE
Home &vert; Java Spring &vert; Spring Core
Spring Framewok’ünün Core modülü veya daha çok bilinen adıyla Spring Core, Spring Framework’ün en önemli parçalarından biridir. Daha önce gördüğümüz diğer tüm spring modülleri (Web, Integration, Data Access, Testing, Aop) bu modül üzerine inşa edilmiştir.
Spring Core, bize internationalizaiton desteği(i18), validaiton desteği, Data Binding desteği Type Conversion gibi bir çok özellik sunmaktadır. Fakat Spring Core’un merkezinde bulunan en önemli özellik Dependency Injection’dır. Dependency Injection konusu başlı başına bir yazı sebebi olduğu için bu yazıda buna değinmeyeceğim. Fakat hiç duymamış veya az bilgi sahibi okuyucular için yine de kaba bir şekilde aktarmaya çalışacağım çünkü bu konu hakkında bilgi sahibi olmamız Spring Core’u anlamamız açısından önemli.
Yazılımlar, nesne yönelimli programlama kullanılarak geliştirildiğinde, geliştiriciler belirli şeyleri temsil eden veya modelleyen nesneler oluştururlar. Nesneler kendi kendilerini yaratamazlar. Genellikle bir uygulamayı oluşturan çeşitli nesneler vardır ve bu nesnelerin her biri diğer nesnelere bağımlı olabilir.
Örneğin; Bir geliştirici, bir bilgisayarı temsil etmek için bir bilgisayar nesnesi oluşturabilir ve bu bilgisayar nesnesinin bir sabit disk nesnesi ve ram nesnesi gibi diğer nesneye bağımlılıkları olabilir. Dependency Injection’in görevi bu bağımlıkları gerçekleştirmeye çalışmaktır.
Nesne bağımlılıklarını gerçekleştirmek için öncelikli olarak iki farklı tercih vardır, birincisi, nesne kendi bağımlılıklarını kendi gerçekleştirir. İkincisi ise, Nesne neye ihtiyacı olduğu söyler ve bağımlılıklar nesen dışından yönetilir.
İlk seçenek kolay ve güzelmiş gibi gelebilir, fakat bazı sınırlamaları vardır. Bir obje kendi bağlıklıklarını kendi gerçekleştiriyorsa, o obje, o bağımlık birbirine sıkıca bağlanmış demektir. Biz buna tightly coupled objects diyoruz.
Gerçek hayattan örnekle açıklarsak, ilk seçenek bizim için ram’ini değiştiremediğiniz veya yükseltemediğiniz bir bilgisayar satın almak gibi olurdu. Bilgisayarın yapım aşamasında ramler ile birlikte üretilmiş bir bilgisayar ve ram değiştirmek istediğinizde yapamıyorsunuz tek seçenek yeni bir bilgisayar almak.
İkinci seçenek ise daha esnek ve özgürdür. Bağımlılıklar hale mevcut fakat diğeri kadar sıkı değil. Biz buna da loosely coupled object diyoruz. İkinci seçenekte bilgisayar örneğine bakarsak bu da ram eklenebilen, kaldırabilinen bir bilgisayar olur. Siz hangisi tercih ederdiniz? İşte bu ikinci seçenek dependency injection’un ta kendisi.
Spring Core, bir Dependency Injection Container’dir . Nesneleri ve bağımlılıkları bunu üzerinden bildiririz ve spring core onları kendisi oluşturur, yönetir ve birbirine bağlar. Böylece geliştiriciye yönetmesi için daha az iş kalır ve büyük bir yük alınmış olur.