
در این سری از مقالات با مفاهیم پایه Spring Boot آشنا میشویم. پیشنیاز این دوره آموزشی دانستن مفاهیم پایه فریمورک Spring است. مفاهیمی مانند Dependency Injection و Inversion of Control.
در نوشتن این مقالات از منابع مختلفی استفاده شده است. مانند سری کتابهای IN ACTION (کتاب Spring IN ACTION ویرایش پنجم)، آموزشهای Udemy، مقالات مختلف در اینترنت بههمراه تجربیات شخصی خودم.
اسپرینگ یکی از محبوبترین چارچوبهای توسعه نرمافزار برای پلتفرم جاوا است. ما در وهله اول از Spring برای توسعه برنامههای وب استفاده میکنیم، اما میتوانیم به کمک آن برنامههای desktop و حتی command-line تولید کنیم. در حالت کلی Spring فریمورکی از فریمورکهاست که با کار کردن در کنار یکدیگر عملکرد استاندارد را برای برنامه فراهم میکنند. برای همین است که گاهی به آن پلتفرم اسپرینگ گفته میشود، یعنی چیزی فراتر از یک فریمورک.

نکته کاربردی برای authentication و authorization: فرض کنید که کارمند بانک هستیم. وقتی هر روز وارد بانک میشویم ابتدا باید به نوعی خود را معرفی کنیم تا بتوانیم وارد شویم. مثلا با وارد کردن نام کاربری و رمز عبور. به این کار میگویند Authentication .
حالا فرض کنید که نام کاربری و رمز عبور ما صحیح است و بهعنوان کارمند بانک تایید شدهایم اما با توجه به اینکه کارمند بانک هستیم، دسترسی به گاوصندوق را نداریم و فقط معاون و رئیس شعبه کلید گاوصندوق را دارند. بهطور سادهتر هرکسی در بانک نقشی دارد و دسترسیهای هر فرد با توجه به نقش آن فرد مشخص میشود. به این کار Authorization گفته میشود.
باید به این نکته توجه کنیم که اسپرینگ یک فریمورک عالی نیست! و سازندگان آن هم این موضوع را قبول دارند. یکی از معضلات این فریمورک پیکربندی یا configuration برنامههای مبتنی بر اسپرینگ است. این کار، یعنی پیکربندی سرعت توسعه را به شدت کاهش میدهد و باعث میشود توسعه دهندگان، بهخصوص تازه کارها با پیچیدگیهای بیشتری مواجه شوند.
خوشبختانه توسعهدهندگان اسپرینگ متوجه این پیچیدگی شدهاند و یک فریمورک جدیدی با نام Spring Boot را پدید آوردند که بسیاری از کارهای مربوط به پیکربندی را خودکار میکند.
اسپرینگ بوت بخشی از پلتفرم اسپرینگ است که به توسعهدهندگان اجازه میدهد برنامههای stand-alone مبتنی بر اسپرینگ تولید کنند. این فریمورک با استفاده از رویکرد convention over configuration بهطور چشمگیری پیکربندیهای برنامه را آسان کرده است. این به آن معناست که بهجای اینکه برنامهنویس همهچیز را کانفیگ کند، فریمورک بهصورت پیشفرض بعضی از کامپوننتها، رفتارها و پیکربندیها را برای بعضی از بخشهای مهم در Spring تعریف میکند.

بعضی دیگر از ویژگیهای جالب در Spring Boot
الف: command-line interface.
ب: مانیتور کردن وضعیت برنامه در حال اجرا با استفاده از actuator.
پ: وب سرور نهفته یا embedded برای اجرای برنامههای تحت وب.
همانطور که میدانید راهاندازی یک پروژه Spring بسیار دشوار است. در ابتدای ساخت پروژه با سوالهای زیر مواجه میشویم:
این سوالات حداقل سوالهایی است که در مرحله نسخت به ذهن ما میرسد. با پیشرفت پروژه، سوالها و درگیریهای بیشتری بهوجود میآید. اما راه حل چیست؟ بله اسپرینگ بوت :)