با نام و یاد خدای بخشنده مهربان در این مقاله برآنیم تا مروری بر کلیات فریمورک معروف و محبوب اسپرینگ خدمت شما کاربران محترم ارائه کنیم.


اسپرینگ یک فریمورک منبع باز برای برنامه های کاربردی و یک مدیر وارونگی کنترل (inversion of control) برای پلت فرم جاوا است. ویژگی های اصلی این فریمورک می تواند توسط هر برنامه جاوا مورد استفاده قرار گیرد، اما دارای extension هایی برای ساختن برنامه های کاربردی وب بر روی پلت فرم JavaEE می باشد. اگر چه این فریمورک هیچ مدل برنامه نویسی خاصی را به برنامه نویس تحمیل نمی کند، اما در میان برنامه نویسان جاوا به عنوان یک راهکار دوم، یا یک جایگزین یا حتی افزونه ای برای مدل Enterprise JavaBeans (EJB) تبدیل شده است. این فریمورک توسط آقای راد جانسون (Rod Johnson) نوشته شده و برای اولین بار در سال 2003 ارائه شد. نسخه دوم در سال 2006 ارائه شده و موفق به دریافت جوایز متعدد گردید. و تاکنون تا نسخه 4.3 از این فریمورک منتشر شده است.
فریمورک اسپرینگ

اسپرینگ یک فریمورک سبک است که می توان آن را فریمورک فریمورک ها نامید! به این خاطر که از انواع فریمورک ها شامل Struts، Hibernate، Tapestry، EJB، JSF و غیره پشتیبانی می کند. در نگاهی کلی تر اسپرینگ را بعنوان ساختاری تعریف می کنیم که در آن می توان solution های مربوط به مسایل تکنیکال مختلف را پیدا کرد. فریمورک اسپرینگ شامل چندین ماژول است از جمله IOC، AOP، DAO، Context، ORM، WEB MVC و غیره. این ماژول ها را در مقاله های بعدی خواهیم آموخت.



در ابتدا بهتر است مفهوم وارونگی کنترل (IOC) و تزریق وابستگی (Dependency Injection) را درک کنیم.
وارونگی کنترل (IOC) و تزریق وابستگی (DI)

این دو مفهوم الگوهای طراحی هستند که باعث می شوند «وابستگی» از کد برنامه جدا شود. بنابراین تست و نگهداری کد را راحت تر می کنند. اجازه بدهید با یک مثال این مفهوم را درک کنیم:
کد:
 class Employee{  
Address address;  
Employee(){  
address=new Address();  
}  
}
در این مثال، بین Employee و Address وابستگی وجود دارد (tight coupling یا اتصال کامل). در سناریوی وارونگی کنترل، این کار را بصورت زیر انجام می دهیم:
کد:
 class Employee{  
Address address;  
Employee(Address address){  
this.address=address;  
}  
}
بنابراین، IOC باعث می شود کد ما اتصال ضعیف (loosely coupled) باشد. در این مثال، اگر منطق برنامه به محیط جدید منتقل شود نیازی نخواهد بود که کد دستخوش تغییر شود. در فریمورک اسپرینگ، مدیر IOC (IOC container) مسئول تزریق وابستگی است. می توانیم متاداده ها را از طریق مدیر IOC و همینطور فایل XML و یا annotation فراهم کنیم. مزایای تزریق وابستگی

  • کد را به حالت اتصال ضعیف در می آورد که نگهداری آن بمراتب راحت تر است
  • تست کد را تسهیل می کند

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

اسپرینگ مزایای بسیاری دارد که عبارتند از:

    1. قالب های از پیش تعریف شده


اسپرینگ قالب هایی (templates) برای تکنولوژی های JDBC، Hibernate، JPA و .. فراهم می کند. بنابراین نیازی به نوشتن کدهای زیاد نیست. اسپرینگ گام های پایه ای این تکنولوژی ها را مخفی می کند.


    1. اتصال ضعیف


برنامه های اسپرینگی بخاطر وجود تزریق وابستگی، loosely coupled هستند.


    1. تست آسان


تزریق وابستگی موجب می شود تا تست برنامه ها راحت تر شود. برنامه های EJB یا Struts برای اجرا نیاز به سرور دارند اما فریمورک اسپرینگ نیازی به سرور ندارد.


    1. سبک وزن


اسپرینگ بسیار سبک است، چرا که پیاده سازی آن POJO است. اسپرینگ برنامه نویس را وادار نمی کند که از ارث بری و یا پیاده سازی واسط (implement interface) استفاده کند. به همین خاطر است که به آن غیرتهاجمی (non-invasive) گفته می شود.


    1. توسعه سریع


وجود تزریق وابستگی و نیز پشتیبانی از فریمورک های متعدد، اسپرینگ را به یک محیط توسعه آسان و سریع برای برنامه های JavaEE تبدیل کرده است.


    1. انتزاع قدرتمند


اسپرینگ انتزاع بسیار قوی از ویژگی های JavaEE مانند JMS، JDBC، JPA و JTA فراهم می آورد.


    1. پشتیبانی اعلانی (Declarative)


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

منبع: میهن لرن