جلسه شماره 111رایگان

what is Spring? what is Spring Boot | اسپرینگ چیست؟ اسپرینگ بوت چیست؟

00:28:15

توضیحات جلسه

🎥 این ویدیو قسمت صد و سوم از بوت کمپ رایگان جاوا است. این دومین قسمت از پلی لیست آموزش اسپرینگ محسوب می شود که در آن به سراغ پاسخ به یک سوال کلیدی می رویم: فریم ورک اسپرینگ دقیقا چیست و چرا دنیای جاوا را متحول کرد؟ در این ویدیو سعی کردیم بدون پیچیدگی های بی مورد، معماری و ساختار اسپرینگ را بررسی کنیم. اگر تازه کار خود را در دنیای Spring شروع کرده اید، این جلسه برای درک زیربنای تمام کارهای بعدی شما ضروری است. ما در این جلسه با مفاهیم زیربنایی مثل کانتینرها و نحوه مدیریت آبجکت ها آشنا می شویم. در این جلسه یاد می گیریم: ⚙️ هماهنگی کامپوننت ها و نقش حیاتی Application Context و Container در اسپرینگ 🧠 مفهوم عمیق Dependency Injection و نحوه مدیریت Bean ها در پروژه 🧩 بررسی اکوسیستم گسترده اسپرینگ و نحوه پیکربندی کلاس ها 🚀 تفاوت تنظیمات دستی با Automatic Configuration و جادویی که اسپرینگ انجام می دهد 🔥 معرفی دقیق Spring Boot و چرایی محبوبیت آن در پروژه های مدرن و تجاری این ویدیو به شما کمک می کند تا دید بهتری نسبت به ابزاری که روزانه با آن سر و کار خواهید داشت پیدا کنید و مفاهیم پایه ای مثل Bean و Container را به خوبی درک کنید. اگر قصد دارید وارد بازار کار شوید، تسلط بر مفاهیم اسپرینگ که در این ویدیو مطرح شده، از نان شب هم واجب تر است. لینک مایند مپ: https://github.com/farzadafi/Teaching/blob/master/Book/Spring-In-Action-6/01.1_what_is_spring.pdf آیدی گروه پرسش و پاسخ تلگرام: programmingByFarzadAfi@ 💬 گروه پرسش و پاسخ بله: programming_by_farzadafi@ وب سایت: https://farzadafi.ir هر سوالی داشته باشید می توانید در گروه بپرسید تا خودم یا مربی هایی که در گروه حضور دارند کمکتان کنند. 🎯 بوت کمپ رایگان جاوا – آموزش کاملاً پروژه محور برای یادگیری عمیق جاوا و ورود به بازار کار.

جزوه و مستندات

مفاهیم کلیدی

  • Spring

یک framework جامع برای توسعه برنامه‌های کاربردی در زبان Java که شامل container برای مدیریت اجزا، web framework، پشتیبانی از persistence، امنیت، مدیریت زمان اجرا و پشتیبانی از microservice است.

  • Container یا Spring Application Context

هسته Spring که وظیفه‌ی ساخت و مدیریت اجزای برنامه را بر عهده دارد. این اجزا به‌عنوان bean شناخته می‌شوند و تمام اجزای نرم‌افزار در این container به یکدیگر متصل می‌شوند.

  • Bean

یک component که توسط Spring Container ساخته و مدیریت می‌شود. منطقی است که bean را معادل یک جزء قابل‌مدیریت در context در نظر بگیریم.

  • Component

هر بخش از برنامه که وظیفه‌ی مشخصی را بر عهده دارد. یک برنامه غیرساده از اجزای متعددی تشکیل شده که هر کدام بخشی از قابلیت کلی برنامه را ارائه می‌دهند.

  • Component Coordination

فرآیند ساخت و معرفی اجزا به یکدیگر برای ایجاد یک برنامه‌ی کامل. در کاربرد عادی، این اجزا باید ساخته شده و به هم متصل شوند تا بتوانند با هم همکاری کنند.

  • Dependency Injection (DI)

الگویی برای متصل کردن beanها که طی آن، اجزا به‌جای ساخت و مدیریت چرخه‌ی عمر وابستگی‌های خود، آن‌ها را از یک موجودیت جداگانه دریافت می‌کنند.

  • Dependency

یک object که برای فراهم کردن قابلیت کامل خود، به آن نیاز دارد. مثلاً سرویس محصول برای ارائه‌ی اطلاعات کامل، به سرویس موجودی وابسته است.

  • IoC Container

بخشی از Spring که وظیفه‌ی ساخت، حفظ و تزریق beanها را بر عهده دارد و به‌جای کد برنامه، مدیریت اجزا را انجام می‌دهد.

  • Constructor Argument Injection

روشی برای تزریق وابستگی که در آن، وابستگی از طریق constructor به bean داده می‌شود.

  • Application Context

فضایی در Spring که beanها در آن ساخته و به هم متصل می‌شوند تا یک برنامه‌ی کامل را تشکیل دهند.

  • XML Configuration

روش قدیمی پیکربندی Spring که در آن اجزا و روابط آن‌ها با یک فایل XML تعریف می‌شد.

  • Java-based Configuration

روش مدرن پیکربندی Spring که در آن، به‌جای XML، classهای Java تعریف اجزا و رابطه‌ی آن‌ها را بر عهده دارند.

  • @Configuration

مشخص می‌کند که یک class یک کلاس پیکربندی است و beanهای موردنیاز را به Spring Application Context ارائه می‌کند.

  • @Bean

روی متدهای کلاس پیکربندی قرار می‌گیرد و نشان می‌دهد object برگشتی باید به‌عنوان bean در context ثبت شود.

  • Component Scanning

تکنیکی در Spring که طی آن، Spring به‌صورت خودکار اجزا را از روی classpath برنامه شناسایی کرده و آن‌ها را به‌عنوان bean می‌سازد.

  • Autowiring

تزریق خودکار وابستگی‌ها توسط Spring. پس از شناسایی اجزا، Spring به‌صورت خودکار وابستگی‌های موردنیاز هر bean را فراهم می‌کند.

  • Autoconfiguration

قابلیت کلیدی Spring Boot است که بر اساس classpath، متغیرهای محیطی و سایر عوامل، به‌صورت خودکار تشخیص می‌دهد کدام اجزا باید ساخته و متصل شوند.

  • Spring Boot

یک افزونه بر روی Spring Framework که با ارائه قابلیت‌هایی مانند autoconfiguration، توسعه‌ی برنامه‌های Spring را بسیار ساده‌تر کرده است.

  • Legacy Configuration

پیکربندی با XML که روش قدیمی تعریف beanها در Spring بود و امروزه بیشتر جای خود را به پیکربندی مبتنی بر Java داده است.


موارد مصاحبه ای

  • Spring چیست؟

یک framework جامع برای توسعه‌ی برنامه‌های Java است که مدیریت اجزا، DI، امنیت، پشتیبانی از web، persistence و microservice را فراهم می‌کند.

  • وظیفه‌ی Spring Application Context چیست؟

ایجاد و مدیریت componentها و اتصال آن‌ها در قالب bean برای تشکیل یک برنامه‌ی کامل.

  • الگوی اصلی متصل کردن beanها در Spring چیست؟

Dependency Injection که طی آن، container وظیفه‌ی ساخت و تزریق وابستگی‌ها را بر عهده دارد.

  • تفاوت Dependency Injection و Inversion of Control چیست؟

IoC اصل کلی است که مدیریت اجزا را از کد برنامه به container منتقل می‌کند، در حالی که DI یکی از روش‌های پیاده‌سازی آن است که وابستگی‌ها را از بیرون تزریق می‌کند.

  • تفاوت XML Configuration و Java-based Configuration چیست؟

در روش XML، اجزا و روابط با فایل XML تعریف می‌شود، اما در روش Java، این کار با class و annotation انجام می‌شود و type safety و قابلیت refactoring بهتری دارد.

  • @Configuration چه کاری انجام می‌دهد؟

به Spring اعلام می‌کند که این class یک کلاس پیکربندی است و beanهای موردنیاز را به context ارائه می‌کند.

  • @Bean چه کاربردهایی دارد؟

نشان می‌دهد object برگشتی از متد باید به‌عنوان bean در Spring Application Context ثبت شود.

  • component scanning چیست؟

مکانیزمی که Spring با استفاده از آن، اجزا را از classpath به‌صورت خودکار پیدا کرده و به‌عنوان bean می‌سازد.

  • autowiring چیست؟

تزریق خودکار وابستگی‌ها توسط Spring به beanهایی که به آن‌ها نیاز دارند.

  • Spring Boot autoconfiguration چیست؟

تشخیص و پیکربندی خودکار اجزا بر اساس classpath، متغیرهای محیطی و سایر عوامل، بدون نیاز به کد پیکربندی صریح.

  • چرا Java-based configuration بهتر از XML است؟

چون type safety بیشتر، قابلیت refactoring بهتر و مدیریت ساده‌تری دارد.

  • چرا Spring و Spring Boot معمولاً به‌صورت یکسان در نظر گرفته می‌شوند؟

چون Spring Boot توسعه‌ی Spring را آن‌قدر بهبود داده که تصور نوشتن برنامه‌ی Spring بدون آن سخت است؛ بنابراین عموماً Spring Boot به‌عنوان ابزار اصلی و Spring XML به‌عنوان رویکرد قدیمی استفاده می‌شود.


سناریو کاربردی

  • سناریوی InventoryService و ProductService

فرض کنید در یک برنامه، دو سرویس داریم:

  • یک سرویس موجودی برای دریافت سطح موجودی کالا.
  • یک سرویس محصول برای ارائه‌ی اطلاعات پایه‌ی محصول.

سرویس محصول برای ارائه‌ی اطلاعات کامل، به سرویس موجودی وابسته است. این دو، نمونه‌ای از روابط بین beanها هستند. این رابطه طی فرآیند DI توسط Spring Application Context مدیریت و برقرار می‌شود.

  • روش قدیمی پیکربندی با XML

در گذشته، دو bean به نام‌های InventoryService و ProductService در فایل XML تعریف می‌شد و وابستگی ProductService به InventoryService از طریق constructor در همان XML برقرار می‌شد.

  • روش مدرن پیکربندی با Java

در نسخه‌های جدیدتر، کلاس پیکربندی معادل، با annotationهای @Configuration و @Bean تعریف می‌شود و همان رابطه را به‌صورت type-safe برقرار می‌کند.

  • نتیجه‌ی سناریو

با تکیه بر Spring Boot autoconfiguration، بخش زیادی از پیکربندی‌های صریح لازم نیست و برنامه با کمترین کد پیکربندی، کار می‌کند؛ تا حدی که در مثال این فصل فقط یک خط کد پیکربندی لازم است.


بیشتر بدانید

  • نکته‌ی معماری

هر برنامه‌ی غیرساده از اجزای متعددی تشکیل شده است؛ وظیفه‌ی Spring این است که ساخت و اتصال این اجزا را فراهم کند.

  • نکته‌ی طراحی

به‌جای اینکه componentها چرخه‌ی عمر وابستگی‌های خود را مدیریت کنند، در DI مسئولیت ساخت و تزریق به container واگذار می‌شود.

  • نکته‌ی Spring Boot

Autoconfiguration مانند باد عمل می‌کند: اثر آن کاملاً دیده می‌شود، اما کد مشخصی برای آن وجود ندارد؛ همین «نبودِ کد» ماهیت این قابلیت است.

  • نکته‌ی پیکربندی

پیکربندی صریح با Java یا XML تنها زمانی لازم است که Spring نتواند اجزا را به‌صورت خودکار شناسایی و متصل کند.

  • نکته‌ی پیش‌فرض @Bean

به‌طور پیش‌فرض، id هر bean معادل نام متدی است که آن را تعریف می‌کند.

  • نکته‌ی نسخه‌ها و بهترین روش

فصل‌های کتاب بر این اساس طراحی شده‌اند که تا حد امکان از Spring Boot استفاده شود و پیکربندی صریح فقط در مواقع ضروری انجام شود. روش XML قدیمی است و تمرکز اصلی روی پیکربندی Java است.