SpringBoot 3 ile gelen özellikler nelerdir?
Spring Boot, Java ile geliştirilen uygulamaları hızlı ve kolay bir şekilde oluşturmayı ve yapılandırmayı sağlayan açık kaynak kodlu bir…
SpringBoot 3 ile gelen özellikler nelerdir? Upgrade işleminde dikkat edilmesi gereken konular nelerdir?
Spring Boot, Java ile geliştirilen uygulamaları hızlı ve kolay bir şekilde oluşturmayı ve yapılandırmayı sağlayan açık kaynak kodlu bir çerçevedir. Spring Boot, Spring Framework’ün özelliklerini kullanarak, uygulama geliştirme sürecini büyük ölçüde basitleştiren ve hızlandıran bir yaklaşım sunar. Buna ek olarak, developerların yapılandırılmış şablonları, servisleri ve güvenlik için önceden oluşturulmuş modülleri kullanmasını sağlayarak uygulamaları daha hızlı geliştirmelerine olanak tanır.
Spring Boot 2.X serisi, 4 yıllık zaman dilimi boyunca 95 farklı sürüm ve yeni işlevsellik sundu. Bununla birlikte, Spring ekibi Kasım 2023'e kadar 2.7 sürümü için açık kaynak desteği sağlayacak ve ticari destek 2025'e kadar devam edecek. Bu, 2.0'ın 4 yıl önce piyasaya sürülmesinden bu yana Spring Boot’un ilk büyük revizyonu. Ayrıca, Spring Framework 6.0 ve GraalVM için destek sağlayan Spring Boot’un ilk GA sürümüdür.
Spring Boot 3'teki Yenilikler Nelerdir?
Yeni sürümün öne çıkan özellikleri arasında şunlar yer alıyor:
- Temel Java sürümü Java 17'ye yükseltildi . Java 17 en son LTS (Uzun Süreli Desteklenen) sürümüdür ve en son Java sürümlerinde tanıtılan tüm yeni özelliklere sahiptir; örneğin, java record type , *instanceof değişiklikleri, multiline diziler vb. Detaylar ve kod örnekleri için [buraya](https://www.baeldung.com/spring-boot-3-spring-6-new)* bakmanızı şiddetle tavsiye ederim :)
- Deneysel Spring Native projesinin yerini alan GraalVM ile yerel görüntüler oluşturma desteği eklendi. Spring Boot, Graal 22.3 veya sonraki sürümünü ve Native Build Tools Plugin 0.9.17 veya sonraki sürümünü gerektirir.
- EE 9 temeline sahip Jakarta EE 10 desteği getirildi. Java EE, Jakarta EE ile değiştirildi; desteklenen minimum sürüm Jakarta EE9'dur . Bu, geriye dönük uyumluluğu bozar ve geçiş sürecindeki çoğu sorunun kaynağıdır. Paketlerde javax alanı yerine jakarta ad alanı kullanılacaktır.
- Log4j2 geliştirmesi: Spring Boot çerçevesinde bulunan günlük kaydı aracı Log4j2, aşağıdakiler gibi birkaç artımlı iyileştirme içerir:
- Profile Özgü Yapılandırma
- Ortam Özellikleri Araması
- Log4j2 Sistem Özellikleri
Daha fazla ayrıntı için dokümantasyon sayfasını kontrol edebilirsiniz .
- Mikrometre ve Mikrometre İzleme ile iyileştirilmiş gözlemlenebilirlik sağlandı. Cloud uygulamalarını daha verimli hale getirmek için local derlemeye gelişmiş destek getirildi. Düşük bellek kullanımı ve hızlı başlatma süreleriyle local uygulamalar üreten Quarkus ve Micronaut gibi daha yeni çerçevelere bir yanıttır. Aracı tabanlı gözlemlenebilirliğin aksine, Micrometer ile metrikleri kaydeder ve OpenZipkin veya OpenTelemetry gibi sağlayıcılar aracılığıyla izleme sunar .
- @HttpExchange ek açıklamalarını kullanan bildirime dayalı HTTP istemci arabirimi için yerel destek getirildi.
- HTTP API spesifikasyonu [ RFC 7807 ] için Problem Ayrıntıları ile uyum için yeni ProblemDetail API’si geliştirildi.
- Bazı eski özellikler ve üçüncü taraf entegrasyonlar kaldırıldı.
- Ek olarak, gelecekte Spring 6, JDK 17 temel çizgisini korurken Project Loom gibi daha heyecan verici özellikleri benimseyecektir.
- Geliştirilmiş @ConstructorBinding Tespiti:
- Yapıcı bağlamadaki bu iyileştirmeler, yapıcı bağlamayı @ConfigurationProperties sınıflarıyla kullanmayı kolaylaştıracak ve kodu basitleştirecektir.
- Yapıcıya bağlı @ConfigurationProperties kullandığınızda, sınıf tek bir parametreli oluşturucuya sahipse, Spring Boot artık @ConstructorBinding ek açıklamasını gerektirmez. Ancak, birden fazla oluşturucunuz varsa, Spring Boot’a hangisini kullanacağınızı bildirmek için yine de @ConstructorBinding kullanmanız gerekir.
- Çoğu kullanıcı için bu güncellenmiş mantık, daha basit @ConfigurationProperties sınıflarına izin verecektir. Bununla birlikte, bir @ConfigurationProperties’iniz varsa ve yapıcıya bağlamak yerine çekirdekleri enjekte etmek istiyorsanız @Autowired ek açıklaması eklemeniz gerekir.
- Prometheus Desteği: Spring Boot 3'te, Prometheus Exemplars için Otomatik Yapılandırma ve Push Gateway , kapatma sırasında bir PUT gerçekleştirecek şekilde yapılandırılabilir . Ayrıca, Spring Boot mevcut push ayarını kullanımdan kaldırmıştır ve artık bunun yerine post kullanılmasını önermektedir .
- Yeni Elasticsearch Java İstemcisi için otomatik yapılandırma kullanıma sunuldu.
- Apache HTTP istemcisi bir JdkClientHttpConnector ‘ı otomatik olarak yapılandırılacak.
- @SpringBootTest ek açıklaması, herhangi bir @SpringBootConfiguration main classı kullanabilir. Bu, testlerin artık ana yönteminiz tarafından gerçekleştirilen herhangi bir özel SpringApplication yapılandırmasını alabileceği anlamına geliyor.
Spring Boot 3.0'daki kullanımdan kaldırılanlar:
- JsonMixinModule tarama tabanlı oluşturucu kullanımdan kaldırılmıştır ve ClientHttpRequestFactorySupplier, ClientHttpRequestFactories ile değiştirilmiştir.
- Cookie
commentözellikleri artık desteklenmiyor. - RestTemplateExchangeTagsProvider, WebClientExchangeTagsProvider, WebFluxTagsProvider, WebMvcTagsProvider ve ilgili sınıflar, ObservationConvention eşdeğerleriyle değiştirilmiştir.
- HealthContributor @Configuration temel sınıflarındaki args içermeyen oluşturucular kullanımdan kaldırılmıştır.
- DefaultTestExecutionListenersPostProcessor ve SpringBootDependencyInjectionTestExecutionListener, Spring Framework’ün ApplicationContextFailureProcessor lehine kullanımdan kaldırılmıştır.
management.metrics.export.<product>özelliği kullanımdan kaldırıldı, bunun yerinemanagement.<product>.metrics.exportile değiştirildi.- Management.prometheus.metrics.export.pushgateway.shutdown-işleminin gönderi lehine itme ayarı.
- Ayrıca, @AutoConfigureMetrics, @AutoConfigureObservability lehine kullanımdan kaldırılmıştır.
Spring Boot 3'ü çalıştırmak için minimum sistem gereksinimleri nelerdir?
SpringBoot 3 minimum JDK 17, Graal 22.3 veya üzeri ve Native Build Tools Plugin 0.9.17 gerektiriyor. Bu nedenle, Spring’in sunduğu en son özelliklerden yararlanmak için, önce JDK’nızı 17 veya sonraki bir sürüme yükseltmelisiniz.
Spring Boot 3'e yükseltme yapmadan önce dikkat edilmesi gereken önemli konular nelerdir?
- Uyumluluk Kontrolü: Yeni bir Spring Boot sürümüne yükseltme yaparken, mevcut kodunuzun yeni sürümle uyumlu olup olmadığını kontrol etmelisiniz.
- Bağımlılıkların Güncellenmesi: Spring Boot sürümünüzü yükselttiğinizde, bağımlılıklarınızı da güncellemek gerekebilir. Bu, dışarıdan aldığınız kütüphaneleri, veritabanı sürücülerini ve diğer yardımcı bileşenleri içerir.
- Test Süreçleri: Versiyon yükseltmesi yapmadan önce, uygulamanızı geniş kapsamlı testlere tabi tutmalısınız. Birim testleri, entegrasyon testleri ve kabul testleri, uygulamanın var olan akışını ve beklenen davranışını kontrol etmek için önemlidir. Buna mutlaka ciddi bir efor ayırmak gerekir.
- Geri Dönüşüm Planı: Yükseltme işlemi sırasında oluşabilecek sorunlara karşı bir geri dönüşüm planı hazırlayın. Eğer yeni sürümde beklenmedik hatalar veya sorunlarla karşılaşırsanız, eski sürüme geri dönmek için bir planınızın olması önemlidir.
- Aşamalı Yükseltme: Büyük versiyon yükseltmeleri yerine, küçük sürüm yükseltmelerini tercih etmek genellikle daha iyi bir yaklaşımdır.
Öncelikle, eğer küçük çaplı ve çokta karmaşık bağımlılığı olmayan bir projeniz varsa direkt sürüm geçişini deneyebilirsiniz. Fakat büyük ölçekli bir projede upgrade işlemi yapacaksanız sürüm 3.0'a yükseltmeden önce Spring 2.7.x’e güncellemeniz gerekir. Bu, en yeni bileşenlere sahip olmanızı ve olası uyumluluk sorunlarından kaçınmanızı sağlayacaktır.
Unutulmaması gereken bir diğer önemli nokta da, Spring 3.0'ın Spring Security 6.0 gerektirmesidir. Ancak, 6.0'a geçiş yapmadan önce önce Security 5.8'e yükseltmeniz gerekir.
Ek olarak, Spring Boot 3.0'ın Java 8'i desteklemediğini belirtmekte fayda var. Bu nedenle, minimum gereksinim artık Java 17'dir, dolayısıyla JDK’nızı buna göre yükseltmeniz gerekecektir.
Son olarak, Spring 3, Spring 6'da çalıştığı için Spring framework’ü de güncellemeniz gerekecek.
Bu adımları izleyerek, Spring Boot 2'den Spring Boot 3'e başarılı bir şekilde geçiş yapabilmeniz gerekir.
En Son Sürüme Nasıl Yükseltirsiniz?
- Aşamalı sürüm yükseltme — Spring 5 ve SpringBoot 2'nin En Son Sürümüne Yükseltme : 2.7.X’ten önceki bir sürümü kullananlar ve taşımayı planlayanlar için önce 2.7.x sürümüne yükseltmek en iyisidir. Uygulamanızı Spring 5 ve Spring Boot 2'nin en son sürümlerine taşıyın . Bu aynı zamanda resmi tavsiyedir. Spring 6 ve Spring Boot 3'ün ana sürüm güncellemeleri ile gelecek olan önemli değişiklikleri daraltmanıza yardımcı olacaktır. Tüm uygulama testlerini tekrar çalıştırın ve bu adımda görebileceğiniz tüm sorunları düzelttiğinizden emin olun.
- Java yükseltme : Java 17, yeni Spring sürümlerindeki yeni temel olduğundan, önce mevcut Spring sürümleriniz ve mevcut kod tabanınızla uygulamalarınızı Java 17'ye geçirmekle başlayın . Tüm birim testlerini çalıştırarak her şeyin mükemmel çalıştığından emin olun.
- Deprecated Clean : Bu adımda, Spring boot 3'te kaldırılmış oldukları için kullanımdan kaldırılan tüm sınıflardan, yöntemlerden ve özelliklerden kurtulduğunuzdan emin olun.
- Asıl sürüme yükseltme : Ardından, sürümleri Spring framework 6 olarak değiştirin ve aşağıdaki sorunları birer birer düzeltin. Spring Boot 3, bir Jakarta EE 9 spesifikasyonuna bağlıdır. Örneğin, Spring Boot 3, Servlet 5.0 ve JPA 3.0 belirtimlerini kullanır. Spring boot başlatıcıları kullanırken, Spring boot sizin için doğru kitaplık sürümlerini çözecektir. Ancak bazı kitaplıkları içe aktardıysanız, genellikle -jakartaee9 veya -jakarta ile biten yeni yapıları aramanız gerekir .
- Javax — Jakarta kütüphanesi değişimi: Bu değişiklik ile tüm içe aktarmaları yeniden adlandırmanızı gerektirecektir.
javax.*'ı*jakarta.*olarak değiştirin. "Javax" altındaki sınıfları ve arayüzleri “Jakarta”ya değiştirerek başlayın. javax.persistence içe aktarmalarınızı jakarta.persistence sınıflarına geçirin ve hibernate sürümünü Jakarta kalıcılığını destekleyen minimum Hibernate ORM 5.6.x sürümüne yükseltin. Spring Boot 3 varsayılan olarak Hibernate 6 ve Flyway 9'u* kullanır . - Uygulamanızı Tomcat , Jetty veya Undertow gibi uygulama sunucularına dağıtıyorsanız, Jakarta EE 9'u destekleyen minimum sürümlerini yükselttiğinizden emin olun . Ayrıca, javax.servlet içe aktarmalarını jakarta.servlet olarak değiştirmeniz gerekecektir.
- API’ye Özel Değişiklikler :
- Spring MVC ve Spring WebFlux artık denetleyicileri yalnızca *@RequestMapping ek açıklamasına dayalı olarak algılamaz. [@Controller veya @RestController](https://howtodoinjava.com/spring-boot2/rest/controller-restcontroller/)* ek açıklamalarını belirtmeliyiz . Web denetleyicilerinizi bir kez daha kontrol edin.
- Uzak uç noktalara REST çağrıları yapmak için RestTemplate kullanıyorsanız, Apache HttpClient 5'e yükseltmeniz gerekecektir .
- HttpMethod bir sınıf olduğundan ve artık bir enum olmadığından , genel API’leri kullanmak yerine bu numaralandırmaları doğrudan kullanırsanız kodunuzu değiştirmeniz gerekebilir. Genel API’lerde herhangi bir değişiklik yoktur.
- Açıkça eklediyseniz Log4j2 sürümünü de yükseltmeniz gerekebilir. Bu yazıyı yazarken otomatik olarak içe aktarılan sürüm Log4j 2.18'dir.
Adım adım upgrade işlemi nasıl yapılır, kod örnekleri ve hata çözümleri ile detaylı olarak paylaştığım yazıya *buradan* ulaşabilirsiniz..
메타데이터
- post_id
- d09b441b6733
- slug
- springboot-3-ile-gelen-özellikler-nelerdir-d09b441b6733
- url
- https://medium.com/@dileksen3417/springboot-3-ile-gelen-%C3%B6zellikler-nelerdir-d09b441b6733
- canonical_url
- https://medium.com/@dileksen3417/springboot-3-ile-gelen-%C3%B6zellikler-nelerdir-d09b441b6733
- author_url
- https://medium.com/@dileksen3417
- status
- ok
- fetched_at
- 2026-07-25 09:50:52