Spring Framework Nedir?
Spring, Java ve .NET için geliştirilmiş açık kaynak kodlu bir framework’tür. JavaEE uygulamalarını geliştirmeyi kolaylaştırır. Spring’i “frameworks of framework” olarak düşünebiliriz çünkü Struts, Hibernate, Tapestry, EJB, JSF gibi frameworklerin kullanımını destekleyen bir frameworktur.
Yani Spring hafif (lightwight) bir frameworktur. Dilimize çevirdiğimizde kulağa ne kadar tuhaf gelse de, bu frameworke neden hafif denilmiştir?
1-) Birinci sebebimiz; yukarıda da bahsettiğim gibi Spring birçok modülü ve üçüncü parti kütüphaneleri kullanıma sunarak onlarla sıkıntısız bir şekilde entegrasyon işlemi sağladığından.
2-) Eğer EJB ile Spring’i kıyaslayacak olursak çok daha az kod ve konfigürasyon işlemleri ile uğraşırız. Böylece ciddi bir iş yükünden kurtularak ‘business logic’ dediğimiz uygulamamızda verinin yorumlandığı ve iş kurallarının uygulandığı katmana odaklanma şansı buluruz. Bu da Spring’in hafif olmasının bir diğer sebebidir.
Spring Modülleri
Spring, gruplara ayrılmış yaklaşık 20 farklı modülden oluşmaktadır.
1-) Core Container
Core Container içerisindeki Core ve Beans modülleri Spring Framework’unun en temel özelliği olan Inversion of Control (IoC) ve Dependency Injection(DI) ‘ı sağlamaktadır.
Inversion of Control (IoC) ve Dependency Injection(DI)
IoC, kontrolün uygulamadan alınarak frameworke(Spring) aktarılmasıdır. IoC ile Java nesnelerinin oluşturulması, yaşam döngüsü tayin etme, yaşam süreleri, nesneler arası bağımlılıklar ve tüm bunların yönetimi yazılım geliştiriciden alınıp Spring’e verilmiş olur.
DI, bağımlılıkları ortadan kaldırmak şeklinde ifade edilir.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ştiricinin üzerinden almasıdır.Peki bunu nasıl yapıyor?
Burda söylemeden geçemeyeceğim şey ise DI ‘nın, IoC’nun örneklerinden birisi oluşudur. Yani Dependency Injection ile Inversion of Control’u sağlamış oluruz.
2-)AOP(Aspect Oriented Programming)
Aspect Oriented Programming bu modülde implemente edilmiştir. Spring’in AOP özellikleri direk kullanılmasa da, deklaratif transaksiyon ve güvenlik uygulamalarında Spring AOP, Core Container tarafından dolaylı olarak kullanılır.
Program çerçevesinde yer almak zorunda olmayan bazı metot (transaction, logging vb.) ve modülleri bir yerde toplayarak programdan bağımsız bir yerde implemente eder.
3-) Data Access/Integration
Bu katmanda JDBC, ORM, OXM, JMS ve Transaction modülleri bulunur. Bu modüller basitçe söylemek gerekirse database ile etkileşim kurmayı sağlar.
4-)Web(MVC/Remoting)
Bu katmanda Web, Web-Servlet ve Web-Portlet modülleri bulunur. Bu modüller web uygulaması oluşturmayı sağlar.
5-)Test
Bu katman JUnit ve TestNG ile test işlemini sağlar.
Core Container 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 teknoji(ler) kullanılabilir.
Spring Framework’un Avantajları
1-) POJO kullanılarak yazılım yapılabilir. POJO kullanmanın yararı ise application serverına ihtiyaç duymadan kurulumun daha kolay olmasıdır .
2-) Spring MVC ile web tabanlı programlar oluşturmak mümkündür.
3-) Spring, konfigurasyon dosyalarında yapılacak ayarlamalar ile otomatik olarak Singleton nesneler oluşturabilir. Bunun için özel Singleton sınıfların oluşturulması gereği ortadan kalkar.
4-) Spring, xml ve anotasyon konfigürasyonlarını destekler.
5-) Spring ile geliştirilen uygulamaların test edilebilirliği daha kolaydır.
6-) Spring AOP entegrasyonunu destekler.
7-) Spring modüler bir yapıya sahiptir. Proje gerekleri doğrultusunda belirli Spring modülleri kullanılabilir.
Daha fazla bilgi için:
https://docs.spring.io/spring/docs/current/spring-framework-reference/