معرفی Spring و Spring Boot

قبل اینکه به Spring Boot بپردازیم اول باید بدونیم Spring چیه ؟اسپرینگ یک فریم ورک نرم افزاری و یک ظرف کنترل وارونگی برای سکوی جاوا است.اسپرینگ یکی از فریم ورک های برنامه نویسی معروف و پرکاربرد در زبان جاوا است.اولین نسخه اسپرینگ توسط راد جانسون نوشته شد. او اولین نسخه این فریم ورک محبوب را همراه با انتشار کتاب خود به نام Expert one-on-one j2ee design and development در اکتبر 2002 منتشر کرد. اسپرینگ ابتدا تحت مجوز آپاچی 2/0 در ماه ژوئن سال 2003 منتشر شد.اسپرینگ از ابتدای ارائه تا الان تغییرات زیادی داشته و بسیار قدرتمند و معروف شده است. این فریم ورک متن باز بوده و هدف اصلی آن توسعه برنامه های Enterprise است و بیشتر در پلتفرم javaEE مورد استفاده قرار می گیرد.اسپرینگ یک فریم ورک ماژولار بوده و ماژول های آن در دسته بندی زیر قرار میگیرند :ظرف هسته اسپرینگ : شامل ماژول پایه اسپرینگ است ( Beans , Core , .... ) که هسته اصلی اسپرینگ را تشکیل می دهند.برنامه نویسی جنبه گرا (AOP) : این ماژول امکان پیاده سازی زیر سیستم های فرای پروژه را فراهم میکند.(به طور ساده میتواند عملیات در حین، قبل یا بعد از اجرای یک method را به آن اضافه کند).احراز هویت و برسی مجوز : فرآیندهای امنیتی قابل تنظیم که طیف وسیعی از استانداردها، پروتکل ها، ابزار و شیوه ها را از طریق پروژه های امنیت اسپرینگ پشتیبانی میکند.قرارداد بر روی تنظیمات : یک روش تولید سریع نرم افزار برای توسعه برنامه های سازمانی بر پایه اسپرینگ که در ماژول Spring Roo ارئه شده است.دسترسی به داده ها : کار با سیستم های مدیریت پایگاه داده رابطه ای بر روی سکوی جاوا، با استفاده از JDBC و ابزارهای نگاشت شی-رابطه و سیستم های پایگاه داده NoSQL .ظرف وارونگی کنترل : پیکربندی اجزای نرم افزار و مدیریت چرخه عمر اشیاء جاوا، غالبا از طریق تزریق وابستگی.اطلاع رسانی : ثبت اشیاء شنونده پیام، به صورت قابل تنظیم، برای دریافت پیام شفاف از صف پیام و از طریق JSM، بهبود ارسال پیام بر روی استاندارد واسطه های برنامه نویسی JSM .وب (Web) : برای طراحی web بر اساس مدل MVC به کار میرود.تست : این ماژول استفاده از ابزارهاییی مانند Junit و ... را برای تست برنامه ها به ما میدهد.....................شکل زیر یک نمای کلی از ماژول های اسپرینگ را نمایش میدهد. شما میتوانید بر حسب نیاز خود تنها از ماژول های مورد نیازتان استفاده کنید و بقیه را کنار بگذارید.Spring به صورت کلی هدف از توسعه این فریمورک زمینه سازی زیرساخت برای توسعه نرم افزار به نحوی بوده که در آن استفاده کنندگان از این چارچوبیرفا تمرکز خود را بر روی منطق دامنه کاری خود گذاشته و فراهم سازی زیرساخت و یکپارچه سازی آن به سادگی قابل انجام است.در حال حاضر امکان ارتباط با پایگاه های داده SQL و NoSQL با سطح بالایی از انتزاع توسط پروژه های مستقل بر پایه Spring ایجاد شده است (پروژه های Spring Data ) و برنامه نویسان تمامی جوانب برنامه خود را با کمک SPI و API هایی که Spring در اختیار آنها قرار میدهد پیاده سازی می کنند.امیدوارم تونسته باشم به خوبی Spring رو معرفی کنم در ادامه به معرفی Spring Boot و آشنایی با اون میپردازم.Spring Bootیکی از پروژه هایی که بر پایه Spring ایجاد شده است Spring Boot است. بر خلاف سایر پروژه های بر پایه Spring که به منظور ایجاد یکپارچه سازی و یا تسهیل در بکارگیری تکنولوژی خاصی ایجاد شده اند، این پروژه برای آماده سازی و بکارگیری مولفه های مختلف فریم ورک Spring ایجاد شده است. امکاناتی که این پروژه برای برنامه نویسان ایجاد کرده موجب افزایش سرعت برنامه نویسی و کاهش پیچیدگی و سادگی برنامه ها شده است.پروژه Spring Boot از ( اینجا ) قابل دسترسی است و مستندات جامع آن از ( اینجا ) قابل دریافت و مشاهده است.جهت درک بهتر از چگونگی عملکرد Spring Boot مقایسه ای بین پیاده سازی یک برنامه وب با فریم ورک Spring بدون استفاده از Spring Boot و با استفاده از آن را خواهیم داشت.برای پیکربندی اولیه یک برنامه وب با فریم ورک Spring مراحل زیر باید انجام شود :1- مسیر برنامه طبق استاندارد JavaEE باید دارای یک پوشه به نام WEB-INF بوده که پوشه lib و classes در آن قرار دارند. در این پوشه کلاسهای کتابخانه های مورد نیاز برنامه قرار خواهد گرفت.2- فایل های js و css و html و ... در پوشه های مربوط به خود قرار خواهد گرفت.3- فایلی به نام web.xml که شامل تعریف سرولت DispatchServlet است باید طبق استاندارد Servlet ایجاد و پیکربندی شود.4- بین(bean)های مورد نیاز برنامه وب باید در ApplicationContext و در فایل های Servlet.xml.* به صورت کامل تعریف شوند.5- کنترلرها و کلاس هایی که منطق برنامه و عملیات برنامه را انجام می دهند باید پیاده سازی شوند.6- پس از ایجاد فایلهای مورد نیاز باید به کمک ابزارهای ساخت مختلف مانند Maven , gradle و ... فایل نهایی war تولید شود.7- فایل war تولید شده جهت اجرا نیازمند یک Servlet Container است که میتوان از undertow , jetty , Tomcat ویا موارد دیگر استفاده کرد.هدف کلی Spring Boot کاهش مراحل تکراری و تنظیمی مربوط به پیکربندی برنامه است و به صورت خودکار تنظیمات بسیاری از بخش های مختلف مانند تنظیمات وب، اتصال به پایگاه داده، تنظیمات مربوط به امنیت برنامه و موارد دیگر را انجام میدهد و به طور کلی همه موارد به جز مرحله پنجم در موارد بالا نیاز به ایجاد و پیکربندی توسط برنامه نویس نخواهد بود.جهت ایجاد یک برنامه وب توسط Spring Boot میتوان ساختار کلی یک پروژه را با توجه به نیازمندی ها از start.spring.io دریافت کرد.به عنوان مثال جهت ایجاد یک برنامه وب به کمک Spring Boot با استفاده از دستور زیر میتوان فایل ها و نیازمندی های اولیه را تعریف کرد.رفتن به آدرس start.spring.io و ساخت و دریافت پروژه راحت تر است. curl -s https://start.spring.io/starter.zip -o myapp.zip -d type=maven-project -d dependencies=webدر این مرحله یک برنامه قابل اجرای وب با فریم ورک Spring ایجاد و پیکربندی شده است و میتوان کنترلرها و سرویس ها و کامپوننت های مورد نیاز برنامه را به آن اضافه کرد.به عنوان مثال با اضافه کردن کنترلر زیر در مسیر src\main\java\com\example از فایل اکسترکت شده در مرحله قبل جهت تعریف کنترلر به شکل زیر عمل خواهیم کرد.@RestController class HelloWorldController{ @RequestMapping("/") String home(){ return "Hello World"; } }به کمک دستور زیر میتوانیم برنامه نوشته شده با Spring Boot را اجرا کنیم.mvn spring-boot:runپس از باز کردن آدرس http://localhost:8080 عبارت Hello World نمایش داده خواهد شد.به این ترتیب یک برنامه با کمک فریم ورک Spring در کمترین زمان ایجاد شده است.جمع بندی :1- با کمک Spring Boot امکان توسعه‌ی برنامه‌های بومی ابری که الگوهای ۱۲فاکتور را دنبال می‌کنند فراهم است.2- استفاده از Spring Boot منجر به کاهش زمان توسعه می‌شود که نتیجه‌ی آن افزایش بهره‌وری است.3- یک برنامه‌ی Spring سازمانی با کمک Spring Boot به سادگی ایجاد و توسعه داده می‌شود.4- نیازمندی‌های غیر عملیاتی مانند actuator و embedded container ها به صورت خودکار پیکربندی می‌شوند.5- امروزه مفهوم میکروسرویس‌ها با داشتن ویژگی‌های توسعه‌پذیری بالا، دسترس‌پذیری بالا، قابلیت اعتماد و … در بین برنامه‌نویسان اهمیت زیادی دارند که Spring Boot با ویژگی‌های خود به خوبی در این حیطه قابل تعریف و استفاده است.امروزه به صورت کلی جهت ایجاد پروژه های Spring از پروژه Spring Boot استفاده میشود. پیشنهاد می شود جهت آشنایی با نصب و اجرا و کار با Spring Boot در یک پرژه وب فیلم هایی که تهیه شده را مشاهده بفرماید . ( آموزش اسپرینگ بوت ساخت یک برنامه وب نمایش آب و هوا (1) ) https://www.aparat.com/v/uqifF ( آموزش اسپرینگ بوت ساخت یک برنامه وب نمایش آب و هوا (2) ) https://www.aparat.com/v/nm4qI ( آموزش اسپرینگ بوت ساخت یک برنامه وب نمایش آب و هوا (3) ) https://www.aparat.com/v/4FVwc ( آموزش اسپرینگ بوت ساخت یک برنامه وب نمایش آب و هوا (4) ) https://www.aparat.com/v/ax8HL منابع :سایت https://spring.ioسایت https://howtodoinjava.com/spring-boot-tutorials سایت http://javacup.irسایت http://www.springmvc.irکتاب pro spring boot , felipe gutierrezو spring boot reference manual