menusearch
javapro.ir

انتشار Spring Boot 4 — تحلیل کامل ۱۱ تغییر مهم!

جستجو
سه شنبه ۲۱ مرداد ۱۴۰۴ | ۲۳:۰۳:۴۳
۱۴۰۴/۵/۱۸ شنبه
(5)
(0)
انتشار Spring Boot 4 — تحلیل کامل ۱۱ تغییر مهم!
انتشار Spring Boot 4 — تحلیل کامل ۱۱ تغییر مهم!

انتشار نسخه جدید اسپرینگ بوت تحت عنوان Spring Boot 4  در این مقاله برنامه نویسی جاوا کامل آن را بررسی کرده ایم

 

انتشار Spring Boot 4 — تحلیل کامل ۱۱ تغییر مهم!


آیا اخیراً متوجه شده‌اید؟ وقتی یک پروژه جدید Spring Boot ایجاد می‌کنیم، اکنون گزینه‌ای برای پیش‌نمایش Spring Boot نسخه 4.0.0 وجود دارد، همان‌طور که در تصویر زیر نشان داده شده است: 

 

جزییات انتشار نسخه جدید Spring Boot 4


نسخه جدید Spring Boot 4 بر پایه فریم‌ورک تازه معرفی‌شده Spring Framework 7.0.0 ساخته شده است.


آموزش فریمورک spring boot 4


خب، اینجاست که سؤال پیش می‌آید: تغییرات مهم در نسخه جدید چیست؟
در ادامه، پیش‌نمایشی از این تغییرات را به شما نشان می‌دهم.

 

 

 

۱. کنترل نسخه (Version Control) شیک و کارآمد

در نسخه جدید، پشتیبانی زیبا و رسمی از نسخه‌بندی API اضافه شده است. این قابلیت به توسعه‌دهندگان اجازه می‌دهد از طریق پارامتر version در annotation @RequestMapping نسخه‌های مختلف یک API را پیاده‌سازی کنند.

نمونه کد این قابلیت به شکل زیر است:

 

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class VersionedController {

    @RequestMapping(value = "/user", version = "1")
    public String getUserV1() {
        // Version 1 implementation
        System.out.println("Version 1");
        return "Version 1";
    }

    @RequestMapping(value = "/user", version = "2")
    public String getUserV2() {
        // Version 2 implementation
        System.out.println("Version 2");
        return "Version 2";
    }
}

 


نتیجه اجرا:

 

اموزش فریمورک Spring boot 4

۲. تزریق Bean راحت‌تر و منعطف‌تر

در نسخه جدید، قراردادی تازه به نام BeanRegistrar معرفی شده است که امکان ثبت Bean‌ها را به شکلی منعطف‌تر فراهم می‌کند.
با استفاده از این قابلیت، می‌توانید چندین Bean را به‌طور هم‌زمان ثبت کنید.

نمونه کد استفاده از این ویژگی به شکل زیر است:

 


import org.springframework.beans.factory.BeanRegistrar;
import org.springframework.beans.factory.BeanRegistry;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.core.env.Environment;

@Configuration
@Import(MyBeansRegistrar.class)
public class MyConfiguration {
}

class MyBeansRegistrar implements BeanRegistrar {

    @Override
    public void register(BeanRegistry registry,
                           Environment env) {
        registry.registerBean("user", User.class);
        if (env.matchesProfiles("dev")) {
            registry.registerBean(Order.class, spec -> spec
                    .supplier(context -> new Order("order_001")));
        }
    }
}

class User {
    private String name;
}

class Order {
    public Order(String name) {
        this.name = name;
    }

    private String name;
}

 

تست واحد (Unit Test):

 

جزییات انتشار نسخه اسپرینگ بوت 4

 


۳. بهبود قابلیت Null-Safety

در نسخه جدید، از annotation‌های کتابخانه JSpecify برای اعلام وضعیت ایمنی در برابر مقدار null در API استفاده شده است. در این روش:

    @Nullable مشخص می‌کند که یک مقدار می‌تواند null باشد.

    @NonNull مشخص می‌کند که یک مقدار نمی‌تواند null باشد.

این قابلیت همراه با IntelliJ IDEA کار می‌کند تا در صورت وجود مشکل، هشدار یا پیام خطا نمایش داده شود. نمونه کد زیر این قابلیت را نشان می‌دهد:

 


import org.jspecify.annotations.NonNull;
import org.jspecify.annotations.Nullable;

public class Person {
    private String name;

    public void setName(@NonNull String name) {
        this.name = name;
    }

    @Nullable
    public String getName() {
        return this.name;
    }
}

 

نمایش در IDEA:

 


(برای استفاده از این قابلیت نیاز به نسخه ۲۰۲۴ یا بالاتر IDEA دارید)

 

۴. ایجاد آسان HTTP Proxy

در نسخه جدید، annotation جدیدی به نام @ImportHttpServices اضافه شده است که ساخت پروکسی برای اینترفیس‌های HTTP را بسیار ساده‌تر می‌کند.

با استفاده از این قابلیت، می‌توانید به‌راحتی گروه‌های کاملی از سرویس‌های HTTP را تعریف، شناسایی و پیکربندی کنید.

نمونه کد زیر نشان می‌دهد که چگونه می‌توان از این ویژگی استفاده کرد


 

@Configuration(proxyBeanMethods = false)
@ImportHttpServices(group = "weather", types = {FreeWeather.class, CommercialWeather.class})
@ImportHttpServices(group = "user", types = {UserServiceInternal.class, UserServiceOfficial.class})
static class HttpServicesConfiguration extends AbstractHttpServiceRegistrar {
    @Bean
    public RestClientHttpServiceGroupConfigurer groupConfigurer() {
        return groups -> groups.filterByName("weather", "user")
                .configureClient((group, builder) -> builder.defaultHeader("User-Agent", "My-Application"));
    }
}


5. هفت تغییر مهم دیگر

سایر قابلیت‌ها و به‌روزرسانی‌های این نسخه عبارت‌اند از:

ارتقاء عبارات SPEL:
اکنون عبارات SPEL از ویژگی null-safety و همچنین عملگر Elvis (?:) پشتیبانی می‌کنند، همان‌طور که در کد زیر نشان داده شده است:

 

@Value("#{systemProperties['pop3.port'] ?: 25}")


این کد مقدار ویژگی (property) pop3.port را از تنظیمات سیستم دریافت می‌کند و اگر این ویژگی تعریف نشده باشد، مقدار ۲۵ را به‌طور پیش‌فرض تزریق می‌کند.


پشتیبانی از GraalVM Native:

با استفاده از فناوری Spring AOT، می‌توان برنامه‌ها را به تصاویر بومی (Native Images) کامپایل کرد که این کار باعث کاهش چشمگیر زمان راه‌اندازی برنامه می‌شود.


پشتیبانی از Jackson 3.x:

پشتیبانی از نسخه Jackson 2.x حذف شده و به نسخه Jackson 3.x ارتقاء یافته است.
ارتقاء Servlet و WebSocket:

در این نسخه از Servlet 6.1 و WebSocket 2.2 به‌عنوان زیرساخت اصلی برنامه‌های وب استفاده می‌شود. این موضوع به این معناست که برنامه‌ها باید روی جدیدترین کانتینرهای Servlet مانند Tomcat 11+ و Jetty 12.1+ اجرا شوند.
بهینه‌سازی HttpHeaders:

عملیات مربوط به HttpHeaders اکنون به شکل زیر انجام می‌شود:

 


@RestController
public class MyController {

 @GetMapping("/headers")
 public ResponseEntity<String> handleRequest(HttpHeaders headers) {
 // Old way (deprecated)
 // headers.getFirst("X-Custom-Header");

 // New way
 String value = headers.firstValue("X-Custom-Header").orElse(null);

 // Iterate over all headers
 headers.forEach((name, values) -> {
 System.out.println(name + ": " + values);
 });

 return ResponseEntity.ok("Processed");
 }
}

 

 


ویژگی‌های حذف‌شده:

موارد زیر در نسخه جدید حذف یا منسوخ شده‌اند:

    فضای نام (Namespace) پیکربندی XML برای Spring MVC منسوخ شده و استفاده از پیکربندی جاوا (Java Configuration) جایگزین آن شده است.

    پشتیبانی از JUnit 4 در Spring TestContext Framework منسوخ شده است.

    پشتیبانی از Jackson 2.x منسوخ و نسخه Jackson 3.x جایگزین آن شده است.

    کتابخانه Spring JCL به‌طور کامل متوقف شده است.


افزایش حداقل نیازمندی‌های محیط اجرا:

    Jakarta EE 11 (نیازمند Tomcat نسخه 11 یا بالاتر)

    Kotlin 2.x

    JSONassert 2.0

    GraalVM 23

برای اطلاعات بیشتر درباره تغییرات و ارتقاء، به وب‌سایت رسمی مراجعه کنید:

Spring Framework 7.0 Release Notes

 

جمع‌بندی

برنامه‌نویسی یک حرفه با یادگیری مادام‌العمر است. تغییرات در فریم‌ورک‌ها و ابزارها باعث می‌شود روش‌های کارآمدتر و کاربرپسندتری در اختیار ما قرار گیرد که این امر برای توسعه‌دهندگان بسیار مفید است.

پس بیایید این تغییرات را یاد بگیریم، از آن‌ها استفاده کنیم و با هم تجربه‌شان کنیم.

 

 

 

 

منبع: این مقاله از سایت Medium و نوشته‌ی Oliver Foster گرفته شده است.

 

نظرات کاربران
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

بستن
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

0 نظر
هدر سایت
لیست دوره های مبتدی تا حرفه ای جاوا، از Spring Boot تا معماری میکروسرویس
دوره جامع نخبگان معماری میکروسرویس ها با Java و Spring Boot
دوره برنامه نویسی Spring Core
مشاهده سرفصل ها و ثبت نام در دوره Spring Boot جاواپرو  [کلیک کنید]
آموزش پروژه محور اسپرینگ بوت(Spring Boot)-سیستم دانشگاه
ثبت نام در دوره آموزش Spring security
دوره پرتاب | آموزش پیش نیازهای برنامه نویسی
دوره آموزش مبانی زبان برنامه نویسی جاوا
دوره آموزش مفاهیم پیشرفته زبان برنامه نویسی جاوا
مقدمه ای از زبان برنامه نویسی جاوا(java)
آموزش زبان برنامه نویسی جاوا
آموزش گرافیک در زبان برنامه نویسی جاوا
آموزش مدیریت چیدمان گرافیکی در زبان جاوا
آموزش ساخت بازی دوبعدی در زبان جاوا
Collection ها در زبان برنامه نویسی جاوا
آموزش پروژه محور ساخت برنامه مدیریت بانک با JavaFX
نمونه پروژه های رایگان زبان جاوا
آموزش دیتابیس در زبان برنامه نویسی جاوا
نمونه مثال پایه ای زبان برنامه نویسی جاوا
نمونه مثال String در زبان برنامه نویسی جاوا
آموزش جامع برنامه نویسی JavaFX
آموزش ساخت برنامه آزمون تستی در JavaFX
آموزش برنامه نویسی سوکت در جاوا
آموزش ساخت برنامه دفترچه تلفن با JavaFX
آموزش ساخت ربات ساده تلگرام با زبان جاوا
آموزش ساخت برنامه ماشین حساب با JavaFX
آموزش ساخت برنامه ساده مدیریت ایمیل ها با JavaFX
دوره آموزش Spring Boot
سفارش انجام پروژه زبان برنامه نویسی جاوا(JAVA)
سفارش انجام پروژه برنامه نویسی متلب(MATLAB) با قیمت منصفانه و تحویل به موقع
سفارش انجام پروژه زبان برنامه نویسی سی شارپ (#C)
سفارش انجام پروژه زبان برنامه نویسی سی(C)
سفارش انجام پروژه زبان برنامه نویسی پایتون(Python)
سفارش انجام پروژه زبان برنامه نویسی PHP (پی اچ پی)
سفارش انجام پروژه زبان برنامه نویسی اسمبلی(Assembly)
سفارش انجام پروژه زبان برنامه نویسی جاوا اسکریپت (Javascript)
سفارش انجام پروژه هوش مصنوعی
سفارش انجام پروژه طراحی الگوریتم
سفارش انجام پروژه ساختمان داده ها
سفارش انجام پروژه مهندسی نرم افزار
سفارش انجام پروژه شبکه های کامپیوتری
سفارش انجام پروژه پایگاه داده: دیتابیس (database)
 سفارش انجام پروژه سیستم عامل
سفارش انجام پروژه پاورپوینت(PowerPoint)
سفارش انجام پروژه اکسل (Excel)
سفارش انجام تحقیق و تهیه مقاله
سوالات متداول برنامه نویسی
جدیدترین مطالب
طراحی توسط سایت ساز خبری
گفتگو را شروع کنید
مشاوره ،کلاس خصوصی آنلاین،پشتیبانی دوره های آکادمی جاواپرو و سفارش پروژه