جشنواره تخفیف های جمعه سیاه
مهدی عادلی فر
بنیانگذار توسینسو و برنامه نویس

فریمورک Spring چیست؟ آشنایی با اسپرینگ و ماژول های آن در جاوا

Spring چیست؟ اسپرینگ چه ماژول هایی دارد ؟ در مطلب قبلی به معرفی فریمورک spring از زبان جاوا پرداختیم و گفتیم که این فریمورک برای راحت تر شدن برنامه نویسی سازمانی و تجاری j2ee در جاوا به وجود آمده است. در این مطلب قصد داریم به معماری این فریموک بپردازیم. Spring معماری ماژول بندی شده دارد و شما می توانید هنگام برنامه نویسی و توسعه برنامه خود از هر ماژولی که مورد نیاز شما است استفاده کنید. Spring حدود 20 ماژول دارد که هر کدام از آنها در بخشی از برنامه می توانند به کار گرفته شوند. در تصویر زیر تعداد این ماژول ها و نام آنها را مشاهده می کنید.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
معماری spring و ماژول های آن

حال در ادامه به بررسی بخش های مختلف ماژول های spring می پردازیم.

بخش مرکزی (Spring Core Container)

بخش مرکزی فریمورک spring از چهار نوع ماژول ساخته شده است که شامل بین ها(beans) و هسته (core)، context و ماژول زبان expression می باشد که در تصویر می بینید. حال به بررسی این ماژول های بخش مرکزی می پردازیم.

ماژول core در فریمورک spring

این ماژول مهم ترین ماژول فریمورک spring می باشد. این ماژول امکانات اساسی و پایه فریمورک spring را فراهم می کند. امکاناتی مانند IOC(Inversion Of Control)و Dependency Injection. در مورد این مفاهیم در مطلب قبلی صحبت کردیم. استفاده از dependency injection در spring باعث می شود که برنامه شما به API های وابستگی نداشته باشد.

ماژول Beans در فریمورک spring

ماژول بین ها در هسته spring یک BeanFactory فراهم می کند که در ساخت اشیا بسیار کمک می کند به شکلی که اعمال ساخت و مقدار دهی و دسترسی به اشیا را از منطق اصلی برنامه شما جدا می کند. BeanFactory از دو حالت برای مدیریت اشیا و آبجکت ها استفاده می کند.

    1. Singleton در این حالت فقط یک شئ ساخته می شود که یک نام مشخص دارد و بین همه استفاده کننده ها مشترک می باشد. برای مثال هر وقت که شما متد getBean را از داخل ApplicationContext فراخوانی کنید همیشه یک شی یکسان به شما بازمی گرداند(در مورد متدها و کلاس ها نترسید بعدا برای شما توضیح خواهم داد فعلا به مباحث تئوری برسیم)
    2. Prototype این حالت دقیقا خلاف حالت قبل است هرگاه که شما یک درخواست ارسال می کنید یک شئ جدید برای شما ساخته می شود و به شما بازگردانده خواهد شد.

ماژول context در spring

در این ماژول یک اینترفیس وجود دارد که ApplicationContext نام دارد که قسمت مهم ماژول context می باشد. این ماژول پل ارتباطی ماژول های core, beans با دنیای بیرون است و برای دسترسی و تغییرات در اشیای bean ها باید از ماژول context استفاده شود.

ماژول زبان expression

زبان expression مربوط به spring (SpEL) یک زبان قوی است که قابلیت کوئری گرفتن از اشیا موجود در زمان اجرا را به ما می دهد. این زبان همچنین برای تزریق کردن اشیا و یا property آنها در داخل شئ دیگر نیز استفاده می شود.

بخش دسترسی به داده ها (Data access/integration)

ارتباط با داده ها در spring

این لایه از از فریمورک spring شامل قسمت های ORM, JDBC, OXM, JMS, Transactions می باشد که در ادامه هرکدام را توضیح می دهیم.

  • ماژول JDBC: jdbc مخفف java database connectivity می باشد. فریمورک spring برای این که مشکلات مربوط به دیتابیس ها را حل کند و کاربران درگیر اعمال سطح پایین برای ارتباط با دیتابیس ها نشوند این ماژول را ارائه داده است. کلاس اصلی این ماژول jdbcTemplate می باشد که شامل API هایی است که اعمال رایج مربوط به دیتابیس را پیاده سازی کرده است. این اعمال شامل دسترسی به داده ها و ایجاد کانکشن ها ساخت statement های جاوا و بستن ارتباطات و آزاد کردن منابع می باشد. کلاس jdbcTemplate در داخل پکیج org.springframework.jdbc.core قرار دارد.
  • ماژول ORM: همانگونه که می دانید ORM مخفف Object Relation Mapping می باشد و می دانید که ORM ها بخش هایی هستند که یک جدول دیتابیس را به شکل یک کلاس در برنامه در می آورد تا بتوان به سادگی از آن استفاده کرد. این ماژول spring یک سری API برای ارتباط با ORMهای معروف مانند JPA, JDO , Hibernate, iBatis فراهم می کند.
  • ماژول OXM: OXM مخفف Object XML Mappers می باشد که تبدیل شی به xml و برعکس را پشتیبانی می کند. همچنین این ماژول به راحتی با معماری های معروف و قالب های متداول xml ارتباط برقرار می کند. Spring علاوه بر پشتیبانی قوی از xml، دارای کلاس ها و API هایی هست که به راحتی با داده های json ارتباط برقرار می کند و آنها را به شئ های جاوا تبدیل می کند.
  • ماژول JMS: JMS مخفف java messaging service می باشد. این ماژول برای تبادل پیام مورد استفاده قرار می گیرد.
  • ماژول Transaction: این ماژول تراکنش ها را مدیریت می کند و امکانی به وجود می آورد که برخی از اعمال یا به طور کامل انجام شود و یا کلا انجام نشود.

لایه وب در معماری spring

mvc در فریمورک spring

لایه وب (Web) از بخش های زیر تشکیل شده است.

  • ماژول web: این ماژول اصلی ترین ماژول سمت وب می باشد و ویژگی های پایه وب را دارا می باشد همچنین قابلیت هایی مانند آپلود چند تکه و مقدار دهی IOC را نیز دارا می باشد. این ماژول از قابلیت های servlet ها نیز استفاده می کند.
  • ماژول Servlet: در فریمورک spring مدل MVC در داخل ماژول servlet پیاده سازی شده است تا بتوان با استفاده از آن برنامه های تحت وب تجاری و سازمانی ساخت.
  • ماژول struts: این ماژول ارتباط اپلیکیشن spring را با struts لایه وب برقرار می کند. با استفاده از این ماژول می توان با قابلیت dependency injection اکشن های struts را پیکربندی کرد.
  • ماژول portlet: spring portlet کمک می کند تا اپلیکیشن های وب را راحت تر توسعه دهیم. Portlet در ساختن رابط کاربری با استفاده از داده های موجود استفاده می شود.

سایر ماژول های spring

برخی دیگر از ماژول ها در معماری به کار رفته در فریمورک spring وجود دارد که در این بخش به آنها می پردازیم.

  • ماژول AOP: این ماژول، ماژول برنامه نویسی جنبه گرا می باشد. این ماژول یکی از اصلی ترین فاکتورهایی است که قابلیت برنامه نویسی جنبه گرا را برای spring فراهم می آورد.
  • ماژول Aspects: این ماژول با Aspetj که یک فریمورک قوی برای برنامه نویسی جنبه گرا ارتباط برقرار می کند و قابلیت این نوع برنامه نویسی را به spring می دهد.
  • ماژول تست: این ماژول اجازه می دهد که برنامه نوشته شده با spring را بتوان با کتابخانه های تست مانند junit, testing تست کرد.

در این مطلب قصد داشتیم ساختار و اسکلت فریمور spring را شرح دهیم. حال در مطالب بعدی به شروع به کار با فریمورک spring و برنامه نویسی با آن خواهیم کرد. از این که نکات و نقطه نظرات خود را بیان کنید خوشحال خواهم شد.Itpro باشید


مهدی عادلی فر
مهدی عادلی فر

بنیانگذار توسینسو و برنامه نویس

مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم.

نظرات