0 امتیاز
قبل در برنامه نویسی توسط (1.1هزار امتیاز)
قابلیت autowire در Spring چیست و چه مزیتی دارد؟ آیا bean های Spring بصورت پیش فرض autowire هستند؟

2 پاسخ

+1 امتیاز
قبل توسط (1.1هزار امتیاز)

در Spring می توان وابستگی بین bean ها را با استفاده از autowire بصورت خودکار مدیریت کرد، بدین معنی که بدون تعریف کردن تگ property و خصوصیت ref در زمان تعریف وابستگی، وظیفه پیدا کردن bean برای inject کردن درون bean وابسته را به خود Spring می سپاریم.

autowiring در Spring پنج نوع دارد ('no', 'byName', 'byType', 'constructor', و 'autodetect') که بصورت پیش فرض قابلیت autowire در Spring غیر فعال است و مقدار خصوصیت autowire برای یک bean برابر no است و حتما باید برای آن bean با استفاده از تگ property و خصوصیت ref وابستگی تعریف شود:

 <bean id="employee" class="com.javabyab.spring.autowire.Employee">
  <property name="name" value="Jonty" />
  <property name="age" value="28" />
  <property name="address" ref="address"></property>
 </bean>

حال اگر بخواهیم از قابلیت autowiring از نوع byName استفاده کنیم تعریف بالا بصورت زیر تغییر می کند:

 <bean id="employee" class="com.javabyab.spring.autowire.Employee"
  autowire="byName">
  <property name="name" value="Jonty" />
  <property name="age" value="28" />
 </bean>

همانطور که ملاحظه می کنید بدلیل استفاده از نوع byName دیگر وابستگی به کلاس Address درون فایل xml تعریف نشده است و بدلیل اینکه کلاس Employee یک فیلد از نوع Address دارد و مقدار خصوصیت autowire نیز برابر byName است در صورت همنام بودن فیلد ازنوع Address در کلاس Employee با نام Address bean در تنظیمات Spring عملیات dependency injection بصورت خودکار اتفاق می افتد.

0 امتیاز
قبل توسط (1.2هزار امتیاز)

برای inject کردن یک bean درون یک bean دیگر دو راه وجود دارد. یکی اینکه توسط xml در فایل های معروف به applicationcontext به صورت زیر عمل شود :

<bean id="destinationBeanId" class="FULL_CLASS_NAME">

<property name="propName" ref="sourceBeanId">

</bean>

و یا اینکه از انوتیشن

@Autowired

قبل از تعریف متغیر حامل bean مربوطه و یا قبل از تعریف متد setter آن استفاده شود.

autowire در واقع همان bean injection است.

قبل توسط (0 امتیاز)
slm
khili khub va Mofied boud mamnounam

VG
Mehdi

سوالات مشابه

+1 امتیاز
1 پاسخ 662 بازدید
+1 امتیاز
1 پاسخ 547 بازدید
+2 امتیاز
2 پاسخ 815 بازدید
0 امتیاز
0 پاسخ 306 بازدید
0 امتیاز
0 پاسخ 603 بازدید
+1 امتیاز
1 پاسخ 1.5هزار بازدید
0 امتیاز
1 پاسخ 462 بازدید
سوال شده 6 سال قبل در برنامه نویسی توسط HA (347 امتیاز)
0 امتیاز
1 پاسخ 464 بازدید
+1 امتیاز
1 پاسخ 448 بازدید
...