Spring Framework Nedir?

Buse Odacı
3 min readOct 26, 2018

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.

Spring is a lightweight framework”.

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.

Spring Framework’e ait modüller

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?

Nesneler arası bağlar XML konfigürasyon dosyaları üzerinden otomatik gerçekleştirilir. Örneğin: ClassA sınıfı ClassB tipinde bir değişkene sahip olsun. Bu bağımlılık Spring tarafından ClassA dan nesne oluşturulurken göz önünde bulundurulur. Spring otomatik olarak ClassB sınıfından nesne oluşturarak ClassA sınıfından oluşturduğu nesneye enjekte eder. İki sınıf arasındaki bağ böylece Spring tarafından Dependency Injection metodu ile oluşturulmuş olur.

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/

https://www.onlinetutorialspoint.com/spring-tutorials

http://www.kurumsaljava.com/download/34/

--

--