اسپرینگ فریم ورک و تزریق وابستگی

spring application context

ظرفی است که اسپرینگ برای ایجاد و مدریت کامپوننت‌ها‌ی یک برنامه ارائه می‌دهد.

این کامپوننت‌ها و bean ها درون این ظرف با متصل شدن به یک دیگر(وابستگی هایی که به یکدیگر دارند) یک اپلیکیشن کامل را تشکیل می دهند.

این متصل شدن کامپونت ها یه یک دیگر براساس یک الگوی شناخته شده به نام dependency injection می‌باشد.

در یک کامپونتت وقتی نیاز به یک کامپونتت دیگر داریم یا به اصطلاح یک کامپونتت به یک کامپونتت دیگر وابستگی دارد به جای اینکه شی‌ای از یک کامپونتت را درون کامپونتت دیگر بسازیم و نگهداری کنیم. از قانون تزریق وابستگی استفاده می کنیم

برای مثال وقتی کلاس A درون خود به یک شی از کلاس B نیاز دارد به جای اینکه یک شی از کلاس B را درون خود ایجاد کرده و استفاده کند

می توانیم به صورت زیر یک شی از کلاس B را به عنوان یکی از آرگومان های سازنده کلاس A پاس بدهیم.

public class A{
B b;
public A(B b){
this.b = b;
}
}

ایده اصلی Dependency Injection این می باشد که اتصالات و وابستگی را بصورت جدا از هم ایجاد کند، بصورتی که کلاس مادر یا شی ایجاد شده به راحتی قابل آزمایش و اجرا باشد.

اصولا مشکل زمانی پیش خواهد آمد که ما یک کلاس را ایجاد کرده باشیم و در آینده بخوایم در یک شی تغییراتی ایجاد کنیم، این تغییرات بسیار دشوار می باشد چرا که اگر از تزریق وابستگی استفاده نکرده باشیم باید تمام نونه های آن شی را تغییر دهیم.


همانطور که در شکل زیر مشاهده می کنید . قبلا برای معرفی کردن این وابستگی ها به spring باید این ارتباط ها را در قالب یک فایل XML معرفی میکردیم. و در نسخه های اخیر spring می توانیم با ایجاد کلاس های پیکربندی بر اساس کد جاوا و علامت گذاری آن‌ها با انوتیشن @Configuration و معرفی کامپوننت ها و وابستگی آن‌ها با استفاده از انوتیشن @Bean به اسپرینگ.





Automatic configuration

پیکربندی خودکار شاخه در تکنیک هایی دارد که به اسم های component scanning و autowiring شناخته می‌شوند

با component scanning اسپرینگ به صورت خودکار کامپوننت ها را از classpath تشخیص داده و به عنوان یک bean در spring application context قرار می‌دهد

و با autowiring اسپرینگ یک کامپوننت را در صورت نیاز آن در یک کامپوننت دیگر به صورت خودکار inject یا به اصطلاح تزریق می‌کند

اما!!!!!?


در نسخه های اخیر اسپرینگ با معرفی spring boot پیکربندی خودکار چیزی فراتر از component scanning و autowiring رفته.

اسپرینگ بوت خیلی از کارهای برنامه نویس ها رو کمتر و اسونتر میکنه به گونه ای که شما دیگر فایل های خاصی برای کانفیگ بین ها و کامپوننت ها نمی بینید (البته میتوانید از کانفیگ های مورد نظر در صورت علاقه?استفاده کنید )

در بخش های بعدی به ادامه ی داستان میپردازیم

موفق باشید❤️