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 پاسخ 821 بازدید
+1 امتیاز
1 پاسخ 796 بازدید
+2 امتیاز
2 پاسخ 1.1هزار بازدید
0 امتیاز
0 پاسخ 477 بازدید
0 امتیاز
0 پاسخ 697 بازدید
+1 امتیاز
1 پاسخ 1.6هزار بازدید
0 امتیاز
1 پاسخ 579 بازدید
سوال شده 6 سال قبل در برنامه نویسی توسط HA (347 امتیاز)
0 امتیاز
1 پاسخ 715 بازدید
+1 امتیاز
1 پاسخ 552 بازدید
...