PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : تزریق وابستگی در فریم ورک اسپرینگ (Dependency Injection)



saeed.mihan
July 10th, 2017, 00:27
به نام خدای مهربان، در ادامه مطالب مربوط به فریمورک اسپرینگ (https://www.mihanlearn.net/category/learn/java-spring-tutorial/)، در این مقاله با مبحث تزریق وابستگی آشنا خواهیم شد.
تزریق وابستگی (DI)، یک الگوی طراحی است که وابستگی ها را از کد برنامه حذف می کند. این کار باعث می شود مدیریت و تست برنامه راحت تر شود. تزریق وابستگی، کد برنامه را اصطلاحا اتصال ضعیف (loosely coupled) می کند.
https://www.mihanlearn.net/wp-content/uploads/2017/07/dependency_injection_Mihanlearn.jpg (http://www.mihanlearn.net)
برای اینکه DI را بهتر درک کنیم، ابتدا بهتر است در مورد Dependency Lookup (DL) بدانیم:
DLروشی است که در آن منابع در صورت تقاضا دریافت می شوند. راه های مختلفی برای دریافت یک منبع وجود دارد مثلا:
A obj = new AImpl(); در این روش دستیابی به منبع، که در اینجا یک نمونه از کلاس A است، مستقیما با استفاده از کلمه کلیدی new صورت گرفته است. روش دیگر factory method است. factory به object ای گفته می شود که برای ایجاد سایر object ها مورد استفاده قرار می گیرد. این روش بصورت زیر است:
A obj = A.getA(); در این رویکرد، برای دستیابی به منبع مورد نظر خود (یعنی یک نمونه از کلاس A) از فراخوانی factory method استاتیک getA استفاده کردیم.
روش دیگر به اینصورت است که با استفاده از JNDI (Java Naming Directory Interface) منبع مورد نیاز را بدست آوریم:
Context ctx = new InitialContext();
Context environmentCtx = (Context) ctx.lookup("java:comp/env");
A obj = (A)environmentCtx.lookup("A"); بنابراین می بینید که روش های دستیابی به منابع بسیار متنوع است. حال بیایید مشکل موجود در این رویکرد را ببینیم.

مشکلات Dependency Lookup: در کل دو مشکل اصلی در DL وجود دارد:
اتصال قوی (tight coupling): DL موجب می شود کد برنامه ما اتصال کامل باشد. بنابراین اگر منابع عوض شود نیاز به تغییرات بسیاری در کد برنامه خواهیم داشت.
تست نه چندان ساده: این روش در زمان تست برنامه کاربردی مشکلات بسیاری ایجاد می کند، بخصوص در تست black box.

تزریق وابستگی تزریق وابستگی یک الگوری طراحی است که منجر می شود وابستگی ها از کد برنامه حذف شود. در این روش اطلاعات لازم را از طریق یک منبع خارجی مانند فایل XML در اختیار برنامه قرار می دهیم. به همین دلیل کد برنامه حالت اتصال ضعیف پیدا کرده و تست آن ساده تر می شود. در این روش کد را بصورت زیر می نویسیم:



class Employee{
Address address;
Employee(Address address){
this.address=address;
}
public void setAddress(Address address){
this.address=address;
}
}
در مورد کد بالا، نمونه ای از کلاس Address توسط منبع خارجی مانند فایل XML و همینطور با استفاده از سازنده یا متود setter فراهم شده است.

روش های DI در فریمورک اسپرینگ برای داشتن تزریق وابستگی در فریمورک اسپرینگ، دو روش وجود دارد:


با استفاده از سازنده
با استفاده از متود setter

در مقاله های آتی در مورد این دو روش بیشتر صحبت خواهیم کرد.



منبع: میهن لرن (https://www.mihanlearn.net/2017/07/%d8%aa%d8%b2%d8%b1%db%8c%d9%82-%d9%88%d8%a7%d8%a8%d8%b3%d8%aa%da%af%db%8c-%d8%af%d8%b1-%d8%a7%d8%b3%d9%be%d8%b1%db%8c%d9%86%da%af-dependency-injection/)

alirezakaj
July 10th, 2017, 00:32
جهت کنجکاوی میپرسم شما برنامه نویسی crypter کار کردین ؟
آخه این یکی از روش های کریپت هست