Bu bölümde Spring 3.0, 3.1 ve 3.2 sürümlerinde yer alan yenilikleri sizlerle paylaşmak istiyorum. Bu sürümlerde göze çarpan yenilikler şunlardır:
Spring 3.0
- Bu sürüm ile tüm Spring çatısı Java 5 ile gelen Generics, Varargs ve diğer Java dili yeniliklerini kullanacak şekilde elden geçirilmiştir. Spring’de anotasyon desteği 2.5 sürümü ile gelmiş olsa bile, Spring 3.0 sürümü ile bu destek daha da artırılmış ve JSR-330 ile gelen standart Java anotasyonların kullanımı mümkün hale gelmiştir. Bu şekilde anotasyon bazlı konfigürasyon kullanıldığında standart Java anotasyonları kullanılarak, kod bazındaki Spring çatısına olan bağımlılık ortadan kaldırılabilmektedir.
- Spring uygulamalarında konfigürasyon XML dosyaları üzerinden yapılmaktadır. Spring 3.0 sürümü ile XML dosyası kullanmadan anotasyon bazlı konfigürasyon yapmak mümkün hale gelmiştir.
- Spring 3.0 konfigürasyon imkanlarını daha esnek hale getirmek için Spring Expression Language (SpEL) modülünü ihtiva etmektedir.
- 3.0 sürümü ile Spring MVC uygulamalarını daha kolay konfigüre etmek için yeni XML mvc isim alanı oluşturulmuştur. Yeni eklenen @CookieValue ve @RequestHeaders gibi anotasyonlarla Spring MVC uygulamalarının anotasyon bazlı konfigürasyonu genişletilmiştir.
- Web uygulamaları geliştirmek için kullanılan Spring MVC, 3.0 sürümü ile REST (Representational State Transfer) desteği sağlamaktadır. Spring MVC ile bir REST uygulaması oluşturmak için Spring MVC controller sınıfları kullanılmaktadır. RestTemplate kullanıcı (client) uygulamalar geliştirmek için kullanılmaktadır.
- jdbc isim alanında yer alan embedded-database konfigürasyon elementi ile HSQL, H2, ve Derby gibi veri tabanı sistemlerinin kullanımı kolaylaştırılmıştır.
- Java EE 6 ile kullanıma sunulan @Asynchronous anotasyonu ile metotlar asenkron koşturulabilmektedir. Spring 3.0 sürümünde yer alan @Async anotasyonu ile bu desteği sağlamaktadır.
- Spring 3.0 JSR-303 (Bean Validation) bünyesinde yer alan anotasyonları desteklemektedir.
Spring 3.1
- Yeni bir caching modülü (Cache Abstraction) ihtiva etmektedir.
- Bu sürümle Spring bean tanımlamalarını profil bazında gruplamak (bean definition profiles) mümkün hale gelmiştir. Profiller yardımı ile uygulama değişik ortamlara göre adapte edilmiş konfigürasyon dosyalarını kullanabilmektedir.
- Oluşturulan yeni Environment isimli sınıf ile profil bazlı bilgilerin yer aldığı yeni bir alan oluşturulmuştur. Bu alan içinde profil bilgileri yanı sıra tanımlanan değişken (property) değerleri de yer almaktadır. Environment sınıfı kullanılarak bu bilgilere ulaşılabilir.
- constructor-arg elementini daha kısa yazmak için c isim alanı oluşturulmuştur. Bunun kullanımını üçüncü bölümde yakından inceleyeceğiz.
- Bu sürüm Hibernate 4.x desteği vermektedir.
- 3.1 sürümü öncesi enjeksiyon için kullanılan set metotlarının void veri tipinde bir değeri geri vermeleri gerekiyordu. Bu yeni sürümle set metotları herhangi bir yapıda olabilmektedir.
- Spring’in test çatısı olan Spring TestContext bünyesindeki @ContextConfiguration anotasyonu @Configuration anotasyonunu taşıyan konfigürasyon sınıflarını desteklemektedir. Ayrıca entegrasyon testlerinde kullanılmak üzere değişik uygulama profillerini destekleyen @ActiveProfiles anotasyonu oluşturulmuştur.
- JPA bünyesinde sınıflar META-INF/persistence.xml dosyasında tanımlanmaktadır. Spring 3.1 sürümü ile gelen LocalContainerEntityManagerFactoryBean ile classpath içinde yer alan sınıflar otomatik olarak taranarak persistence.xml kullanmayan bir JPA altyapısı oluşturulabilmektedir.
- Spring MVC controller sınıflarında kullanılan @RequestMapping anotasyon tanımlaması consumes ve produces elementleri kullanılarak genişletilmiştir. consumes controller sınıfının hangi türde verileri işleyebileceğini belirlerken, produces kullanıcıya gönderilecek cevabın hangi formatta olması gerektiğini tanımlamaktadır. Böylece örneğin bilgileri XML formatında alan ve kullanıcıya cevabı JSON formatında gönderen controller sınıfları tanımlamak mümkün hale gelmiştir.
- Yeni oluşturulan @RedirectAttributes anotasyonu ile controller metotlarında yönlendirme (redirect) işlemi için parametre tanımlaması yapılabilmektedir.
- @RequestBody anotasyonu kullanılan bir controller metodunda @Valid anotasyonu kullanılarak otomatik validasyon işlemi yapmak mümkün hale gelmiştir.
Spring 3.2
- Spring MVC uygulamalarını uygulama sunucusuna bağımlı olmadan test edebilmek için yeni Spring MVC Test çatısı oluşturulmuştur.
- Bu sürüm Java EE 7’nin bir parçası olan JCache desteği sağlamaktadır.
- Spring MVC, Servlet 3 sürümünde tanımlanan asenkron metot koşturma (asynchronous request processing) özelliğini desteklemektedir.
- RestTemplate HTTP cevaplarında (response) yer alan verileri Java Generics kullanarak (örnegin List) edinebilmektedir.
- Spring bu sürümünde Jackson JSON 2 kütüphanesini ve bir şablon (template) yönetim çatısı olan Tiles 3 sürümünü desteklemektedir.
EOF (End Of Fun)
Özcan Acar
Pratik Spring isimli kitabımdan alıntıdır.
Yorumlar
“Spring 3.x İle Gelen Yenilikler” için bir yanıt
[…] Spring 3.x İle Gelen Yenilikler başlıklı yazım… […]