مشخصات مقاله
-
628
-
0.0
-
3877
-
0
-
0
آموزش Dependency Injection-Java Spring
تزریق وابستگی(DI)
تزریق وابستگی در اسپرینگ
تزریق وابستگی یک الگوی طراحی برای حذف وابستگی های کد برنامه است تا مدیریت و تست برنامه کاربردی ساده تر شود. تزریق وابستگی اتصال ضعیف(loosely coupled) در کد ایجاد می کند. برای درک بهتر DI بهتر است ابتدا درباره DL (Dependency lookup) بدانیم.
Dependency Lookup
DL روشی است که در آن منابع در صورت تقاضا دریافت می شوند. راه های مختلفی برای دریافت یک منبع وجود دارد، برای مثال:
1. A obj = new AImpl();
در این روش، منبع مورد نظر (در اینجا نمونه ای از کلاسA ) مستقیما توسط کلمه کلیدی new دریافت می شود. روش دیگر factory method است:
A obj = A.getA();
در این روش نمونه ای ازکلاس A که منبع مورد نظر است با فراخوانی متد ایستای getA() از factory methodدریافت می شود. روشی دیگر برای دریافت منابع استفاده از JNDI (Java Naming Directory Interface) به صورت زیر است:
1. Context ctx = new InitialContext();
2. Context environmentCtx = (Context) ctx.lookup("java:comp/env");
3. A obj = (A)environmentCtx.lookup
مشاهده کردیم که روش های دریافت منابع بسیار متنوع هستند. حال به بررسی مشکلات این رویکرد می پردازیم.
مشکلات DL
به طور کلی DL دارای دو مشکل است:
- اتصال قوی(tight coupling) : رویکرد DL کد را اتصال قوی می کند. در این صورت اگر منابع تغییر کنند، نیازمند اعمال تغیرات زیادی در کد هستیم.
- تست سخت: این رویکرد مشکلات زیادی را در هنگام تست کردن کد به وجود می آورد به خصوص در تست black box .
تزریق وابستگی
تزریق وابستگی یک الگوی طراحی است که وابستگی ها را از کد برنامه حذف می کند. در این روش اطلاعات از طریق یک منبع خارجی مانند فایل xml ارائه می شود. DI در کد اتصال ضعیف ایجاد می کند که این تست کد را آسان تر می کند. در این موارد کد به صورت زیر نوشته می شود.
class Employee{
Address address;
Employee(Address address){
this.address=address;
}
public void setAddress(Address address){
this.address=address;
}
}
در این مورد، نمونه کلاس آدرس توسط یک منبع خارجی، مانند فایل xml ، از طریق سازنده(constructor) یا متد setter ارائه شده است.
دو روش اعمال تزریق وابستگی در فریمورک اسپرینگ
فریمورک اسپرینگ دو روش برای تزریق وابستگی ارائه می دهد:
1. با استفاده از سازنده (constructor)
2. با استفاده از متد setter
در مباحث آینده به بررسی بیشتر این دو روش برای تزریق وابستگی در اسپرینگ می پردازیم.