نمایش نتایج: از شماره 1 تا 1 , از مجموع 1

موضوع: راه اندازی خودکار (Autowiring) در فریم ورک اسپرینگ

  1. #1
    عضو انجمن saeed.mihan آواتار ها
    تاریخ عضویت
    Mar 2015
    نوشته ها
    230
    تشکر تشکر کرده 
    37
    تشکر تشکر شده 
    191
    تشکر شده در
    129 پست

    113 راه اندازی خودکار (Autowiring) در فریم ورک اسپرینگ

    خوشحالیم که بعنوان اولین مرجع فارسی زبان، آموزش های مربوط به فریم ورک اسپرینگ را بطور رایگان برای اولین بار در کشور در اختیارتان قرار می دهیم.
    ویژگی Autowiring از فریمورک اسپرینگ این قابلیت را در اختیار شما قرار می دهد تا صریحا، اقدام به تزریق وابستگی اشیا نمایید و برای اینکار از تزریق سازنده و setter استفاده می کند. Autowiring را نمی توان برای تزریق مقادیر اولیه (primitive) و رشته ها (string) به کار برد. Autowiring تنها با reference کار می کند. مزیت Autowiring نیاز به کد کمتر، چرا که برای تزریق وابستگی نیاز به نوشتن کد بصورت صریح نخواهیم داشت. معایب Autowiring کنترل در دست برنامه نویس نیست.
    برای مقادیر primitive و رشته ها نمی توان از آن استفاده کرد. حالت های Autowiring Autowiring دارای mode های زیادی به شرح زیر است:
    Mode توضیحات
    no این حالت پیشفرض Autowiring است. یعنی در حالت پیشفرض این قابلیت غیرفعال است
    byName حالت byname وابستگی اشیا را بر اساس نام bean تزریق می کند. در این حالت، لازم است نام property و نام bean یکسان باشند. برای تزریق از فراخوانی متود setter استفاده می کند.
    byType حالت byType وابستگی اشیا را بر اساس نوع (type) انجام می دهد. بنابراین نام property و نام bean می توانند متفاوت باشند. برای تزریق از فراخوانی متود setter استفاده می کند.
    constructor مد constructor، وابستگی را با فراخوانی سازنده کلاس تزریق می کند. این حالت سازنده ای را فراخوانی می کند که تعداد پارامترهای ورودی زیادی دارد.
    autodetect این حالت بعد از ورژن 3 اسپرینگ، حذف شد.

    نمونه هایی از Autowiring بیایید چند نمونه کد ساده برای استفاده از Autowiring در فریمورک اسپرینگ را با هم ببینیم. برای اینکه حالت autowire را فعال کنید باید از خصیصه autowire از bean استفاده کنیم.
    کد:
    <bean id=”a” class=”org.sssit.A” autowire=”byName”></bean>
    حال یک مثال کامل از autowiring در اسپرینگ ببینیم. برای ایجاد این مثلا، 4 فایل زیر را ایجاد کرده ایم:
    B.java
    A.java
    applicationContext.xml
    Test.java

    B.java

    این کلاس تنها شامل یک سازنده و یک متود است.

    کد:
    package org.sssit;  
    public class B {  
    B(){System.out.println("b is created");}  
    void print(){System.out.println("hello b");}  
    }


    A.java


    این کلاس شامل ارجاعی به کلاس B ، سازنده و متود است.

    کد:
    package org.sssit;  
    public class A {  
    B b;  
    A(){System.out.println("a is created");}  
    public B getB() {  
        return b;  
    }  
    public void setB(B b) {  
        this.b = b;  
    }  
    void print(){System.out.println("hello a");}  
    void display(){  
        print();  
        b.print();  
    }  
    
    }
    applicationContext.xml

    کد:
    <?xml version="1.0" encoding="UTF-8"?>  
    <beans  
        xmlns="http://www.springframework.org/schema/beans"  
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xmlns:p="http://www.springframework.org/schema/p"  
        xsi:schemaLocation="http://www.springframework.org/schema/beans   
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">  
      
    <bean id="b" class="org.sssit.B"></bean>  
    <bean id="a" class="org.sssit.A" autowire="byName"></bean>  
      
    </beans>
    Test.java

    این کلاس bean را از فایل applicationContext.xml می گیرد و متود display را فراخوانی می کند.

    کد:
    package org.sssit;  
    import org.springframework.context.ApplicationContext;  
    import org.springframework.context.support.ClassPathXmlApplicationContext;  
    public class Test {  
    public static void main(String[] args) {  
        ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");  
        A a=context.getBean("a",A.class);  
        a.display();  
    }  
    }
    خروجی: b is created
    a is created
    hello a
    hello b
    ________________________________________
    1) حالت byname در حالت byname از autowiring، باید bean id و reference name یکسان باشند. در این حالت از تزریق setter استفاده می کند.
    کد:
    <bean id="b" class="org.sssit.B"> </bean>  
    <bean id="a" class="org.sssit.A" autowire="byName"> </bean>
    اما اگر نام bean را تغییر دهید، دیگر تزریق وابستگی را انجام نخواهد داد! در قطعه کد زیر نحوه تغییر نام bean از b به l را مشاهده می کنید.
    کد:
     <bean id=”b1″ class=”org.sssit.B”></bean>
    <bean id=”a” class=”org.sssit.A” autowire=”byName”></bean>
    ________________________________________
    2) حالت byType در حالت byType autowiring، bean id و reference name می تواند متفاوت باشد. اما باید تنها یک bean از یک type وجود داشته باشد. روش تزریق نیز تزریق setter است.
    کد:
    <bean id="b1" class="org.sssit.B"> </bean>  
    <bean id="a" class="org.sssit.A" autowire="byType"> </bean>
    در این حالت، بدرستی کار می کند زیرا یک نمونه از نوع B ایجاد شده است و اهمیتی ندارد که نام bean و نام reference با هم تفاوت دارد. اما اگر چندین bean از یک نوع (type) داشته باشید، استثنا رخ داده و پرتاب می شود. در زیر قطعه کدی می بینید که تعداد زیادی bean از نوع B وجود دارد.
    کد:
    <bean id=”b1″ class=”org.sssit.B”></bean>
    <bean id=”b2″ class=”org.sssit.B”></bean>
    <bean id=”a” class=”org.sssit.A” autowire=”byName”></bean>
    در این حالت استثنا پرتاب می شود.
    ________________________________________
    3) حالت constructor autowiring در این حالت، مدیر اسپرینگ تزریق وابستگی را با استفاده از سازنده ای که بیشترین پارامتر را دارد، انجام می دهد. اگر در یک کلاس شما سه سازنده داشته باشید، یکی با 0 آرگومان، دیگری با 1 آرگومان و دیگری با 2 آرگومان، در این حالت تزریق با فراخوانی متودی که 2 آرگومان دارد صورت خواهد پذیرفت.

    کد:
    <bean id="b" class="org.sssit.B"> </bean> 
    <bean id="a" class="org.sssit.A" autowire="constructor"> </bean>
    ________________________________________

    4) حالت no autowiring در حالت no autowiring، مدیر اسپرینگ از طریق autowiring تزریق وابستگی انجام نمی دهد.
    کد:
    <bean id="b" class="org.sssit.B"></bean>  
    <bean id="a" class="org.sssit.A" autowire="no"></bean>
    منبع: میهن لرن
    ویرایش توسط saeed.mihan : July 27th, 2017 در ساعت 12:43
    مشاهده آموزش های صفر تا صد سئو، دیجیتال مارکتینگ، شبکه: میهن لرن

  2. # ADS




     

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. نیاز به سرور مجازی + اسپانسر
    توسط taraneha در انجمن درخواست سرور مجازی
    پاسخ ها: 10
    آخرين نوشته: May 5th, 2015, 05:41
  2. اسپانسر برای سرور بازی کانتر آنلاین
    توسط mortal در انجمن فروش سرور مجازی
    پاسخ ها: 4
    آخرين نوشته: July 19th, 2009, 02:46

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •