کمی Spring را در گام خود قرار دهید و یاد بگیرید که چگونه با این فریم ورک قدرتمند اپلیکیشن بسازید.
Spring یک چارچوب جاوا است که از یک کانتینر برای ایجاد و مدیریت اجزای مختلف یک برنامه استفاده می کند. کانتینر (که اغلب به آن زمینه کاربردی Spring می گویند) اجزای مختلف یک برنامه را با استفاده از الگوی طراحی تزریق وابستگی (DI) به هم متصل می کند. DI به شما امکان می دهد از یک شی در یک کلاس وابسته استفاده کنید، بدون اینکه نمونه جدیدی از آن در کلاس وابسته ایجاد کنید.
بنابراین، به جای اجازه دادن به هر مؤلفه برای ایجاد نمونههای جدید از مواردی که به آنها تکیه میکنند، کانتینر Spring نمونهای از هر یک از مؤلفههایی را که میزبانی میکند ایجاد و نگهداری میکند. سپس این ظرف نمونه ای از یک جزء را به تمام اجزای دیگری که به آن نیاز دارند تزریق می کند.
کاوش در ویژگی های اصلی Spring
چارچوب Spring حدود 20 ماژول به خوبی سازماندهی شده دارد که نقش مهمی در توانایی آن برای ایجاد و مدیریت برنامه ها دارند. بر اساس ویژگی های اولیه این ماژول ها، می توانید آنها را به پنج دسته گروه بندی کنید:
- کانتینر هسته
- دسترسی/ادغام داده ها
- وب
- برنامه نویسی جنبه گرا و ابزار دقیق
- تست
کانتینر فنری
Spring از یک کانتینر برای ایجاد و مدیریت اجزای مختلف (که آن را beans می نامد) یک برنامه کاربردی استفاده می کند. این کانتینر از طریق رابط Spring’s ApplicationContext قابل دسترسی است، که به شما امکان می دهد اشیا (یا لوبیا) را نمونه سازی کنید، پیکربندی کنید و جمع آوری کنید. کانتینر Spring به دلیل کمک متادیتای پیکربندی می تواند عملکرد خود را انجام دهد.
این ابرداده پیکربندی می تواند چندین شکل مختلف داشته باشد، اما شکل معمولی آن XML است. علاوه بر لوبیا، ظرف اسپرینگ از یک هسته، زمینه و یک ماژول بیان نیز تشکیل شده است.
دسترسی/ادغام به داده ها
جنبه دسترسی/ادغام داده در چارچوب فنری از چندین زیر ماژول تشکیل شده است: JDBC، ORM، OXM، JMS و تراکنش. این ماژول ها برای مدیریت هر داده ای که برنامه شما استفاده می کند با هم کار می کنند.
وب بهار
ویژگی وب اپلیکیشن Spring یکپارچه سازی وب گرا را برای برنامه شما فراهم می کند. علاوه بر ادغام وب گرا، Spring یک ماژول سرویس دهنده وب ارائه می دهد. ماژول سرورهای وب مسئول اجرای مدل-نمای کنترلر (MVC) Spring’s است.
برنامه نویسی جنبه گرا (AOP)
چارچوب AOP Spring یکی دیگر از اجزای کلیدی آن است. اگرچه چارچوب AOP برای عملکرد کانتینر Spring بسیار مهم نیست، اما با یک راهحل میانافزار توانا، کانتینر را تکمیل میکند. یکی از ویژگی های کلیدی چارچوب AOP این است که خدمات سازمانی اعلامی را برای برنامه شما ارائه می دهد، یعنی مدیریت تراکنش های اعلامیه.
مدیریت تراکنش های اعلامی یک رویکرد مطلوب برای توسعه نرم افزار است زیرا کمترین تأثیر را بر روی کد برنامه دارد.
تست بهار
بهار اهمیت قابل توجهی برای آزمایش برنامه دارد. ماژول تست آن از تست یکپارچه سازی و تست واحد با استفاده از JUnit یا TestNG پشتیبانی می کند.
ایجاد یک اپلیکیشن Spring
راه های مختلفی برای ایجاد صفحه دیگ برای یک برنامه جدید Spring وجود دارد. رویکردهای مختلف عبارتند از:
- از برنامه وب (یا Spring Initializr) در وب سایت رسمی Spring.
- ایجاد دستی ساختار فهرست پروژه و مشخصات ساخت.
- با مجموعه ابزار فنری.
- از خط فرمان با رابط خط فرمان Spring Boot.
- با Eclipse IDE.
- با IntelliJ IDEA IDE.
محبوب ترین روش Spring Initializr است:
همانطور که از تصویر بالا می بینید، باید چندین تصمیم بگیرید. اولین مورد، نوع پروژه ای است که می خواهید مقداردهی اولیه کنید. Spring سه گزینه ارائه می دهد: Gradle برای Groovy، Gradle برای Kotlin یا Maven. این برنامه نمونه از پروژه Maven استفاده می کند.
گزینه های دیگری که باید انتخاب کنید عبارتند از زبان (جاوا)، نسخه Spring Boot که می خواهید استفاده کنید و ابرداده پروژه. Spring در حال حاضر داده های ساختگی در پنج فیلد خود دارد که به شما در ایجاد یک برنامه نمونه کمک می کند. با این حال، شما باید این فیلدها را با داده های خاص پروژه به روز کنید، زیرا این ابرداده برنامه Spring شما از جمله Spring beans و روش های آن را توضیح می دهد.
در مرحله بعد، باید بسته بندی مورد نظر فایل های خود را انتخاب کنید (جار یا جنگ). سپس می توانید نسخه جاوا را که در دستگاه خود دارید انتخاب کنید. تصمیم نهایی که باید بگیرید، نوع وابستگی هایی است که برای درخواست خود می خواهید.
Spring چندین وابستگی ارائه می دهد که می توانید از آنها برای افزودن ویژگی ها به برنامه خود استفاده کنید. برای افزودن یک وابستگی جدید به برنامه خود، کافی است روی دکمه افزودن وابستگی ها در سمت راست Spring Initializr کلیک کنید. این عمل پوشش زیر را روی صفحه نمایش شما ایجاد می کند:
برای این نمونه برنامه، تنها وابستگی مورد نیاز Spring Web است. این وابستگی به شما اجازه می دهد تا برنامه های کاربردی وب را با استفاده از معماری MVC بسازید. پس از انتخاب تمام وابستگی هایی که می خواهید در برنامه خود استفاده کنید، یک کلیک ایجاد کنید. با این کار دیگ بخار پروژه برای شما دانلود می شود.
اکنون شما یک پروژه Spring Boot (که یکی از کتابخانه های Spring است) دارید. مرحله آخر این است که پروژه را به IDE دلخواه خود وارد کنید. پروژه بهار شما ساختار پروژه زیر را خواهد داشت:
این یک ساختار عادی پروژه Maven است و چندین فایل مهم وجود دارد که باید با آنها آشنا شوید.
- Pom.xml: این شامل داده های پیکربندی برنامه Spring است.
- OnlineShopaholicsApplication.java: این کلاس اصلی Spring Boot است که برنامه را اجرا می کند.
- OnlineShopaholicsApplicationTest.java: این یک کلاس تست JUnit است که تضمین می کند که زمینه (یا ظرف) برنامه Spring به درستی بارگیری می شود.
اجرای یک برنامه Spring
کلاس بوت استرپ Spring که در این مورد کلاس OnlineShopaholicsApplication است، کد اولیه زیر را دارد:
package com.onlineshopaholics;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class OnlineShopaholicsApplication {
public static void main(String[] args) {
SpringApplication.run(OnlineShopaholicsApplication.class, args);
}
}
یکی از مهمترین جنبه های کد بالا، حاشیه نویسی @SpringBootApplication است که یک حاشیه نویسی ترکیبی است که به برنامه شما اجازه می دهد به ویژگی های سه حاشیه نویسی دیگر دسترسی داشته باشد:
- @EnableAutoconfiguration: این حاشیه نویسی پیکربندی خودکار Spring Boot را فعال می کند. این بدان معناست که به Spring boot میگوید هر مؤلفهای را که فکر میکند برنامه شما برای عملکرد به آن نیاز دارد، پیکربندی کند.
- @ComponentScan: این حاشیه نویسی به شما امکان می دهد اسکن اجزا را فعال کنید. این ویژگی مهم است، به Spring اجازه می دهد تا به طور خودکار سایر مؤلفه های حاشیه نویسی را برای استفاده در زمینه برنامه Spring (یا کانتینر) کشف و ثبت کند.
- @SpringBootConfiguration: این یک فرم تخصصی از حاشیهنویسی @Configureation است که به شما امکان میدهد bean (یا اشیا) را در زمینه برنامه Spring ثبت کنید.
جنبه مهم دیگر کد بالا متد ()main است که برنامه شما را اجرا می کند. هنگامی که برنامه اکنون اجرا می شود، به سادگی سرور را راه اندازی می کند. بنابراین، اگر می خواهید قابلیت های بیشتری به برنامه اضافه کنید، باید کد را به روز کنید:
package com.onlineshopaholics;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class OnlineShopaholicsApplication {
public static void main(String[] args) {
SpringApplication.run(OnlineShopaholicsApplication.class, args);
}
@GetMapping("/customer")
public String Welcome(@RequestParam(value = "name", defaultValue = "Customer") String name) {
return String.format("Welcome %s!", name);
}
}
اپلیکیشن Spring Boot اکنون دارای سه حاشیه نویسی جدید است:
- @RestController: این حاشیهنویسی کلاس را بهعنوان یک کنترلکننده علامتگذاری میکند، بنابراین هر متد در کلاس بالا (بهجز main()) یک شی دامنه را بهجای view برمیگرداند.
- @GetMapping: این حاشیهنویسی درخواستهای HTTP GET را بر روی روشهای هدر خاص ترسیم میکند. بنابراین، هر بار که درخواستی برای “/customer” در مرورگر ایجاد میکنید، متد Welcome() با برگرداندن یک مقدار رشته، درخواست را رسیدگی میکند.
- @RequestParam: این حاشیه نویسی نشان می دهد که پارامتر متد باید به پارامتر درخواست وب متصل شود.
با کد به روز شده Spring OnlineShopaholics Application شما اکنون یک صفحه مشتری دارد که می توانید آن را در مرورگر خود مشاهده کنید. اجرای برنامه سرور را راه اندازی می کند و خروجی را در کنسول تولید می کند.
اطلاعات مهم زیادی در خروجی وجود دارد. به شما می گوید که سرور در حال اجرا است، به شما می گوید که فرآیند اولیه سازی چقدر طول کشیده است، و به شما می گوید که برنامه روی چه پورتی اجرا می شود (به طور پیش فرض 8080). بنابراین، اگر به http://localhost:8080/customer بروید، خروجی زیر را در مرورگر خود خواهید دید:
اکنون می توانید نمای برنامه خود را طراحی کنید
یکی دیگر از فایل های مهم در ساختار پروژه که ممکن است متوجه آن شوید، پوشه templates است. در حالت ایدهآل، کلاس OnlineShopaholicsApplication باید به عنوان یک کنترلکننده عمل کند که درخواستهای نماهای مختلف را مدیریت میکند. بنابراین، در یک برنامه کامل، کلاس کنترلر نباید حاوی متنی باشد که در نمای درخواست آن نمایش داده شود.
در عوض، باید فایل های قالب را با استفاده از HTML ایجاد کنید و آنها را در پوشه قالب های برنامه Spring خود قرار دهید.