آموزش Spring Boot / بخش نخست

ecosysدر این سری از مقالات با مفاهیم پایه‌ Spring Boot آشنا می‌شویم. پیش‌نیاز این دوره آموزشی دانستن مفاهیم پایه‌ فریم‌ورک Spring است. مفاهیمی مانند Dependency Injection و Inversion of Control.در نوشتن این مقالات از منابع مختلفی استفاده شده است. مانند سری کتاب‌های IN ACTION (کتاب Spring IN ACTION ویرایش پنجم)، آموزش‌های Udemy، مقالات مختلف در اینترنت به‌همراه تجربیات شخصی خودم.فریم‌ورک Spring چیست؟اسپرینگ یکی از محبوب‌ترین چارچوب‌های توسعه‌ نرم‌افزار برای پلتفرم جاوا است. ما در وهله‌ اول از Spring برای توسعه‌ برنامه‌های وب استفاده می‌کنیم، اما می‌توانیم به کمک آن برنامه‌های desktop و حتی command-line تولید کنیم. در حالت کلی Spring فریم‌ورکی از فریم‌ورک‌هاست که با کار کردن در کنار یکدیگر عملکرد استاندارد را برای برنامه فراهم می‌کنند. برای همین است که گاهی به آن پلتفرم اسپرینگ گفته می‌شود، یعنی چیزی فراتر از یک فریم‌ورک.spring-logoاسپرینگ بسیار بزرگ است و توانایی‌های بسیاری دارد:الف) component container: مدیریت چرخه حیات آبجکت‌ها در داخل برنامه را به عهده دارد.ب) data access framework: برای کار کردن با انواع مختلف پایگاه‌های داده.پ) web framework: برای تولید اپلیکیشن‌های مبتنی بر وب.د) security framework: برای پشتیبانی از authentication و authorization.ج: testing framework: برای نوشتن تست برای تمام بخش‌های برنامه.نکته کاربردی برای authentication و authorization: فرض کنید که کارمند بانک هستیم. وقتی هر روز وارد بانک می‌شویم ابتدا باید به نوعی خود را معرفی کنیم تا بتوانیم وارد شویم. مثلا با وارد کردن نام کاربری و رمز عبور. به این کار می‌گویند Authentication .حالا فرض کنید که نام کاربری و رمز عبور ما صحیح است و به‌عنوان کارمند بانک تایید شده‌ایم اما با توجه به اینکه کارمند بانک هستیم، دسترسی به گاوصندوق را نداریم و فقط معاون و رئیس شعبه کلید گاوصندوق را دارند. به‌طور ساده‌تر هرکسی در بانک نقشی دارد و دسترسی‌های هر فرد با توجه به نقش آن فرد مشخص می‌شود. به این کار Authorization گفته می‌شود.باید به این نکته توجه کنیم که اسپرینگ یک فریم‌ورک عالی نیست! و سازندگان آن هم این موضوع را قبول دارند. یکی از معضلات این فریم‌ورک پیکربندی یا configuration برنامه‌های مبتنی بر اسپرینگ است. این کار، یعنی پیکربندی سرعت توسعه را به شدت کاهش می‌دهد و باعث می‌شود توسعه دهندگان، به‌خصوص تازه کار‌ها با پیچیدگی‌های بیشتری مواجه شوند.خوشبختانه توسعه‌دهندگان اسپرینگ متوجه‌ این پیچیدگی شده‌اند و یک فریم‌ورک جدیدی با نام Spring Boot را پدید آوردند که بسیاری از کارهای مربوط به پیکربندی را خودکار می‌کند.فریم‌ورک Spring Boot چیست؟اسپرینگ بوت بخشی از پلتفرم اسپرینگ است که به توسعه‌دهندگان اجازه می‌دهد برنامه‌های stand-alone مبتنی بر اسپرینگ تولید کنند. این فریم‌ورک با استفاده از رویکرد convention over configuration به‌طور چشمگیری پیکربندی‌های برنامه را آسان کرده است. این به آن معناست که به‌جای اینکه برنامه‌نویس همه‌چیز را کانفیگ کند، فریم‌ورک به‌صورت پیش‌فرض بعضی از کامپوننت‌ها، رفتارها و پیکربندی‌ها را برای بعضی از بخش‌های مهم در Spring تعریف می‌کند.spring-boot-logoبعضی دیگر از ویژگی‌های جالب در Spring Bootالف: command-line interface.ب: مانیتور کردن وضعیت برنامه‌ در حال اجرا با استفاده از actuator.پ: وب سرور نهفته یا embedded برای اجرای برنامه‌های تحت وب.اسپرینگ بوت: درکی عمیق‌ترهمانطور که می‌دانید راه‌اندازی یک پروژه‌ Spring بسیار دشوار است. در ابتدای ساخت پروژه با سوال‌های زیر مواجه می‌شویم:از چه نوع Maven archetype استفاده کنیم؟به کدام Maven dependency ها احتیاج داریم؟برنامه را چگونه پیکربندی یا کانفیگ کنیم؟ (با استفاده از XML یا Java)چگونه سرور را نصب کنیم؟ (مثلا Tomcat)این سوالات حداقل سوال‌هایی است که در مرحله‌ نسخت به ذهن ما می‌رسد. با پیشرفت پروژه، سوال‌ها و درگیری‌های بیشتری به‌وجود می‌آید. اما راه حل چیست؟‍ بله اسپرینگ بوت :)اسپرینگ بوت ایجاد پروژه و شروع کار را بسیار آسان می‌کند،کانفیگ‌هایی که برنامه نویس باید انجام دهد را با استفاده از قابلیت auto-configuration که براساس فایل‌های تنظیمات و فایل‌های JAR در classpath انجام می‌شود، به حداقل می‌رساند،برطرف کردن مشکل dependency conflict بین پروژه‌های Maven یا Gradle،فراهم کردن یک سرور نهفته یا همان embedded.