آیا اخیراً متوجه شدهاید؟ وقتی یک پروژه جدید Spring Boot ایجاد میکنیم، اکنون گزینهای برای پیشنمایش Spring Boot نسخه 4.0.0 وجود دارد، همانطور که در تصویر زیر نشان داده شده است:
نسخه جدید Spring Boot 4 بر پایه فریمورک تازه معرفیشده Spring Framework 7.0.0 ساخته شده است.
خب، اینجاست که سؤال پیش میآید: تغییرات مهم در نسخه جدید چیست؟
در ادامه، پیشنمایشی از این تغییرات را به شما نشان میدهم.
در نسخه جدید، پشتیبانی زیبا و رسمی از نسخهبندی API اضافه شده است. این قابلیت به توسعهدهندگان اجازه میدهد از طریق پارامتر version در annotation @RequestMapping نسخههای مختلف یک API را پیادهسازی کنند.
نمونه کد این قابلیت به شکل زیر است:
import org.springframework.web.bind.annotation.RequestMapping;
|
نتیجه اجرا:
در نسخه جدید، قراردادی تازه به نام 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):
در نسخه جدید، از 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 دارید)
در نسخه جدید، 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")); } } |
سایر قابلیتها و بهروزرسانیهای این نسخه عبارتاند از:
ارتقاء عبارات SPEL:
اکنون عبارات SPEL از ویژگی null-safety و همچنین عملگر Elvis (?:) پشتیبانی میکنند، همانطور که در کد زیر نشان داده شده است:
@Value("#{systemProperties['pop3.port'] ?: 25}") |
این کد مقدار ویژگی (property) pop3.port را از تنظیمات سیستم دریافت میکند و اگر این ویژگی تعریف نشده باشد، مقدار ۲۵ را بهطور پیشفرض تزریق میکند.
عملیات مربوط به HttpHeaders اکنون به شکل زیر انجام میشود:
|
موارد زیر در نسخه جدید حذف یا منسوخ شدهاند:
فضای نام (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 گرفته شده است.
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
دوره های آموزشی برنامه نویسی
انجام پروژه های برنامه نویسی
تدریس خصوصی برنامه نویسی
بیش از 7 سال از فعالیت جاواپرو میگذرد
جاواپرو دارای مجوز نشر دیجیتال از وزارت فرهنگ و ارشاد اسلامی است
جهت ارتباط مستقیم با جاواپرو در واتساپ و تلگرام :
09301904690
بستن دیگر باز نشو! |