فریم ورک اسپرینگ (spring framework) چیست؟

در این نوشته قصد دارم که فریم‌ورک اسپرینگ و مفاهیم آن را به طور خلاصه بررسی کنم. فریم‌ورک اسپرینگ (Spring Framework) یکی از چهارچوب‌های برنامه‌نویسی معروف و پرکاربرد در زبان جاواست. این فریم‌ورک متن‌باز (Open Source) بوده و اولین نسخه آن در ماه ژوئن سال ۲۰۰۳ میلادی عرضه شده است. اسپرینگ از ابتدای ارائه تا به امروز تغییرات زیادی داشته و امکانات و ابزارهای بسیار قدرتمندی را در اختیار برنامه‌نویسان قرار می‌دهد. هدف اصلی اسپرینگ توسعه‌ی برنامه‌های Enterprise است و بیشتر در پلتفرم Java EE مورد استفاده قرار می‌گیرد. 

اسپرینگ یک فریم‌ورک ماژولار بوده و ماژول‌های آن در دسته‌بندی زیر قرار می‌گیرند:

  • Core Container: شامل ماژول‌های Bean و Core است که هسته اصلی اسپرینگ را تشکیل می‌دهند.
  • AOP and Instrumentation: یک پیاده‌سازی از برنامه‌نویسی جنبه‌گرا (AOP) را فراهم می‌کند؛ در واقع این ماژول یک interceptor است. (به طور ساده می‌تواند عملیاتی در حین، قبل یا بعد از اجرای یک method، به آن اضافه کند.)
  • Messaging: ماژول مربوط به MessagePassing در برنامه‌نویسی شی‌گرا.
  • Data Access/Integration: ماژول دسترسی به DataSource و پایگاه داده.
  • Web: برای طراحی web بر اساس مدل MVC به کار می‌رود.
  • Test: این ماژول استفاده از ابزارهایی مانند JUnit و… را برای تست برنامه‌ها به ما می‌دهد.

شکل زیر یک نمای کلی از ماژول‌های اسپرینگ را نمایش می‌دهد. شما می‌توانید برحسب نیاز خود تنها از ماژول‌های مورد نیازتان استفاده کنید و بقیه را کنار بگذارید.

شمای کلی ماژول‌های فریم‌ورک اسپرینگ

اسپرینگ چند ویژگی مهم از جمله Dependency Injection، Inversion of Control و Aspect Oriented Programming دارد که در اینجا به طور مختصر آنها را بررسی می‌کنیم:

Dependency Injection یا DI و Inversion of Control یا IoC:

واژه Dependency (وابستگی) هنگامی است که یک کلاس A و یک کلاس B داشته باشیم و کلاس B به کلاس A وابسته باشد. DI یعنی به جای اینکه objectهای ما مجبور به ساخت یک وابستگی باشند و یا از factory object بخواهند که یک وابستگی برای آن‌ها بسازد، کلا وابستگی‌های مورد نیاز را به cunstractor یا از طریق property با setter پاس بدهیم. DI به نوعی زیر مجموعه IoC محسوب می‌شود.

Aspect Oriented Programming یا AOP:

برنامه نویسی جنبه گرا (AOP) مدل خاصی از برنامه‌نویسی است که در آن سعی می شود وظایف از هم مستقل گردند ، یعنی بر خلاف برنامه‌نویسی شی‌گرا که در آن استقلال Objectها اهمیت دارد، در AOP سعی داریم برنامه را از لحاظ cross-cutting-concern ها جدا کنیم. concernها مفاهیمی غیرقابل تجزیه مانند امنیت، انتقال داده، احراز هویت و … هستند.

در این نوشته من تلاش کردم تا دانسته‌های خودم را درباره فریم‌ورک اسپرینگ با شما به اشتراک بگذارم؛ لطفا اگر تعریفی گویا نیست در نظرات بنویسید تا به کمک یکدیگر بتوانیم آن را کامل‌تر کنیم. همچنین اگر شما تعاریف بهتری از این مفاهیم دارید خوشحال می‌شوم در قسمت نظرات آن را برای من و سایر خوانندگان بنویسید.


برچسب‌ها:،،،،،،،،
مرتضی اسدی
مرتضی اسدی
سلام! من مرتضی اسدی هستم، یک توسعه‌دهنده‌ی نرم‌افزار و در این وبلاگ دست‌نوشته‌هایم را می‌نویسم.

نظرات


Mohamad‌ Basabr

تعاریفی که برای IoC و DI و AOP کردید نامفهوم بودن، اگر ممکنه یکم بیشتر بسط بدید. متشکرم

مرتضی اسدی

ارائه تعریف برای مفاهیمی که اشاره کردید، زیاد ساده نیست و من در این نوشته سعی کردم آنها را به روش ساده توضیح بدهم، با این حال فکر می‌کنم مطالعه‌ی این سوال از Stackoverflow برای شما مفید باشد

مهدی تاجیک

خوب بود ولی ای کاش آموزش را با مثال کامل می کردید.

مرتضی اسدی

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

طارق

مطالب که راجع به آی او سی و آی او سی کانینر و دیپندسی انجکشن اراه کردید. کاملا درست نیست هر کدام یک تعریف خاص و کاری خاصی را انجام میدهد.