Spring
Framework, Spring Source firmasının geliştirmiş olduğu ve kurumsal uygulamalara
dönük çözümler getiren büyük bir ekosistemdir. Java platformunun gücü sahip
olduğu topluluklardan
gelmektedir. Spring Source firması bu topluluklardan yalnızca birisidir. Spring
Framework’ün sunduğu özellikle Inversion of
Control (Kontrolü
Spring’e Çevirme) yaklaşımı ile yazılım geliştiricilere
büyük kolaylıklar sağlamaktadır. Dependency Injection (Bağımlılık Enjeksiyonu) mekanizması tüm nesnelerin yönetimini kendi üstlenerek, yazılım
mühendisliğinde arzu edilen nesneler arası bağlaşımı koparma (de-coupling) işlemini esnek bir
şekilde karşılamaktadır. Yazılım geliştiricilere sadece, bir XML konfigürasyon
dosyasında ya da notasyon bazlı yapılandırıcılar ile hangi nesnelerin hangi
nesne referanslarına bağlanacağını belirtmek kalmaktadır. Inversion Of Control (IOC) ve Dependency Injection (DI) kavramları Spring Framework’ün çekirdeğini
oluşturmaktadır.
Spring Framework Modülleri |
Spring Core
(Çekirdek Spring) modülü
haricindeki modülleri kullanmak isteğe bağlıdır. Hiç kullanılmayabilir ya da
arzu edilen ve benzer fonksiyonu yerine getiren diğer açık kaynak teknolojiler kullanılabilir.
Inversion
Of Control (IOC)
Uygulama
geliştiriciler bir programlama dili üzerinde uygulama geliştirirken, ihtiyaç
duydukları nesnelere ait tüm yaşam sürecini kendileri yönetmektedirler. Java
programlama dilinde nesneleri oluşturmak ve nesneler arası ilişkiyi kurmak
yazılım geliştiricinin görevi iken nesneyi sonlandırmak çöp
toplayıcı (garbage collector)’ün
görevidir. Spring Framework kendi container servisleriyle ve IOC (Inversion Of Control) mekanizması
ile Java nesnelerinin oluşturulması ve yaşam döngüsü tayin etme ve bu yaşam
döngüsünü takip etme konusunda tüm sorumluluğu kendi üstüne almaktadır.
Bağımlılık (Coupling) ve Bağımlılık Kesme (De-Coupling)
Nesneye yönelik programlama dillerinde, yazılım
geliştiricilerin oluşturduğu nesneler, geliştirme zamanında birbirleriyle
ilişkilendirilirler. Bu ilişki kalıtım (inheritance)
ve kompozisyon (composition) yöntemlerinden
biri ile gerçekleştirilebilmektedir.
Spring Core
Spring Core paketi, Spring’in temelini oluşturur. Bağlantı kesme gibi temel fonksiyonlar Spring Core içine dahil edilmiştir.
Spring Core paketi, Spring’in temelini oluşturur. Bağlantı kesme gibi temel fonksiyonlar Spring Core içine dahil edilmiştir.
Spring AOP
Spring’in AOP özellikleri direk kullanılmasa da
deklaratif transaksiyon ve güvenlik uygulamalarında Spring AOP, Spring
Core tarafından dolaylı olarak kullanılır.
Spring MVC
Spring MVC (Model-View-Controller) Spring baz alınarak web tabanlı programlar oluşturulabilir. Spring MVC bir web framework olarak kullanılır.
Spring MVC (Model-View-Controller) Spring baz alınarak web tabanlı programlar oluşturulabilir. Spring MVC bir web framework olarak kullanılır.
Spring Context
ApplicationContext ve WebApplicationContext gibi sınıflar bu modülde bulunur. XML dosyalarından bulunan Spring bean tanımlamalarını okumak ve Spring bean
nesnelerini oluşturmak için kullanılırlar.
ApplicationContext ve WebApplicationContext gibi sınıflar bu modülde bulunur. XML dosyalarından bulunan Spring bean tanımlamalarını okumak ve Spring bean
nesnelerini oluşturmak için kullanılırlar.
Spring DAO (Database Access Object)
Bilgi bankaları üzerinde işlem yapmak için kullanılan JDBC teknolojisini kullanımda daha
basit hale getiren sınıflar bu modül içinde yer alır.
Bilgi bankaları üzerinde işlem yapmak için kullanılan JDBC teknolojisini kullanımda daha
basit hale getiren sınıflar bu modül içinde yer alır.
Spring ORM (Object Relational
Mapping):
Bu modül Hibernate, JDO, TopLink ve IBatis gibi popüler ORM frameworkler ile entegrasyonu sağlamaktır.
Bu modül Hibernate, JDO, TopLink ve IBatis gibi popüler ORM frameworkler ile entegrasyonu sağlamaktır.
Bağımlılık Enjeksiyonu (Dependency Injection)
Spring Framework‟ün temelini(core) Bağımlılık Enjeksiyonu (Dependency Injection) ve IOC (Inversion Of Control) kavramları
oluşturmaktadır. IOC (Inversion Of
Control) nesne oluşturma ve yönetme sorumluluğunu yazılım geliştiriciden
kendisine çekerken, Bağımlılık Enjeksiyonu (Dependency Injection) ise yazılım geliştiricilerin
uygulamalarında ihtiyaç duyduğu nesneleri (beans), diğer nesneler ile ilişkilendirirken, ilişki kurma
işini yazılım geliştiriciden Spring Framework dahilinde bulunan Bağımlılık
Enjektörü(Dependency Injector)’ne
devretmesini tanımlamaktadır.
Bağımlılık Enjeksiyon Simülasyonu |
Neden Spring Kullanmalıyım?
Spring Framework’ün en büyük avantajlarından biri ise
Uygulama Sunucularına
olan bağımlılığı ortadan kaldırmasıdır.(GlassFish,
JBoss, WebLogic vb.) Uygulama Sunucuları (Application Servers) container servislerini (Dependency Injection, IOC, EJB ,AOP vb.) uygulama sunucularının
çekirdeğinde barındırırken, Spring Framework ise container servislerini sahip
olduğu kütüphaneler aracılığı ile gerçekleştirmektedir. Bu sayede Spring
Framework ile geliştirilen kurumsal projeler uygulama sunucularına
bağımlılıkları olmadan, basit bir Servlet Container üzerinde
yürütülebilmektedir.(Apache Tomcat,
Jetty vb.)Servlet Container ürünleri genel itibariyle boyut bakımından
5-10 MB bandında olmaktayken, bir uygulama sunucusunu 50-300 MB bandında görmek
mümkündür. Sistem kaynaklarının sınırlı ve ölçülü olduğu ortamlarda Spring
Framework den faydalanmak mantıklıdır. Spring Framework
ile kurumsal uygulamaların ihtiyaç duyduğu fonksiyonlar, Java EE spesifikasyon
kümesi dahilinde bulunan teknolojilerden bağımsız ya da kısmen bağımlı şekilde karşılanabilmektedir.
Kurumsal uygulamalarda hangi teknolojilerden faydalanılacağı, kurumların
şartları, durumları ve ihtiyaçları ölçüsünde karar verilmelidir.
Neden
Spring MVC?
Spring MVC Web Uygulamaları MVC teknolojisinin 3
temel bileşenini(Model, View, Controller) kullanır.
- Models: Genel olarak BLL olarak adlandırılan servis katmanlarına DAL da ki objelerimize karşılık gelmektedir.
- Views: Kullanıcı arayüzlerini geliştirdiğimiz genelde Java Standard Tag Library (JSTL) kullanılarak geliştirilen JSP’lerdir.
- Controllers: Bu katmanda kullanıcı isteklerini karşılayan ve BLL katmanımızla etkileşim içerisinde olan MVC bileşenidir.
Spring MVC Simülayonu |