معماری
ضعیفبد نیستمتوسطخوبعالی (1 votes, average: 5٫00 out of 5)
Loading...

تزریق وابستگی از طریق سازنده در اسپرینگ

به نام خالق عشق

در مقاله های پیشین در مورد تزریق وابستگی در فریمورک اسپرینگ به تفصیل صحبت کردیم. تزریق وابستگی از دو روش قابل انجام است:

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

در این مقاله، در مورد روش اول یعنی تزریق وابستگی از طریق سازنده مثال هایی ارائه خواهیم داد.

همانطور که اشاره شد وابستگی را می توان از طریق سازنده به برنامه تزریق کرد. برای این منظور از <constructor-arg> که زیرمجموعه ای از <bean> است استفاده می شود. در اینجا می خواهیم موارد زیر را تزریق کنیم:

  1. مقادیر اولیه و اصلی (primitive) و مقادیر مبتنی بر رشته (string-based)
  2. اشیای مستقل از هم
  3. مقادیر مجموعه (collection values) و …

تزریق وابستگی در فریمورک اسپرینگ

تزریق مقادیر اولیه و مقادیر مبتنی بر رشته ها

بیایید مثال های ساده ای در مورد تزریق مقادیر اولیه و مقادیر مبتنی بر رشته ها ببینیم. سه فایل زیر را ایجاد کرده ایم:

• Employee.java
• applicationContext.xml
• Test.java

Employee.java

کلاس employee یک کلاس ساده شامل دو فیلد id و name است. علاوه بر آن 4 سازنده و یک متود در این کلاس تعریف شده است.

package com.javatpoint;  
  
public class Employee {  
private int id;  
private String name;  
  
public Employee() {System.out.println("def cons");}  
  
public Employee(int id) {this.id = id;}  
  
public Employee(String name) {  this.name = name;}  
  
public Employee(int id, String name) {  
    this.id = id;  
    this.name = name;  
}  
  
void show(){  
    System.out.println(id+" "+name);  
}    
}

applicationContext.xml

با استفاده از این فایل اطلاعات لازم را در اختیار bean قرار می دهیم. المنت constructor-arg سازنده را فراخوانی می کند. در این حالت، سازنده ای که یک ورودی int می گیرد فراخوانی می شود. خصیصه ارزش از constructor-arg به مقدار int مورد نظر انتساب داده می شود. خصیصه type مشخص می کند که سازنده با پارامتر int فراخوانی خواهد شود.

<?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="e" class="com.javatpoint.Employee">  
<constructor-arg value="10" type="int"> </constructor-arg>  
</bean>  
  
</beans>

Test.java

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

package com.javatpoint;  
  
import org.springframework.beans.factory.BeanFactory;  
import org.springframework.beans.factory.xml.XmlBeanFactory;  
import org.springframework.core.io.*;  
  
public class Test {  
    public static void main(String[] args) {  
          
        Resource r=new ClassPathResource("applicationContext.xml");  
        BeanFactory factory=new XmlBeanFactory(r);  
          
        Employee s=(Employee)factory.getBean("e");  
        s.show();  
          
    }  
}

خروجی :

10 null

تزریق مقادیر مبتنی بر رشته

اگر در المنت constructor-arg، خصیصه type را مشخص نکنید، در حالت پیشفرض سازنده از نوع string فراخوانی خواهد شد.

....  
<bean id="e" class="com.javatpoint.Employee">  
<constructor-arg value="10"></constructor-arg>  
</bean>  
....

اگر مانند مثال بالا، المنت bean را تغییر دهید، سازنده با پارامتر string فراخوانی شده و خروجی زیر را تولید خواهد کرد:

10 0

________________________________________

همچنین می توانید رشته مورد نظرتان را به روش زیر پاس دهید:

....  
<bean id="e" class="com.javatpoint.Employee">  
<constructor-arg value="Sonoo"></constructor-arg>  
</bean>  
....

خروجی:

0 Sonoo

________________________________________

همچنین می توانید مقدار int یا string را بصورت زیر پاس دهید:

....  
<bean id="e" class="com.javatpoint.Employee">  
<constructor-arg value="10" type="int" > </constructor-arg>  
<constructor-arg value="Sonoo"> </constructor-arg> 
</bean>  
....

خروجی:

10 Sonoo

همچنین ببینید

تزریق سازنده در مقابل تزریق setter

مقایسه دو روش SI و CI در فریمورک اسپرینگ

به نام خدای مهربان همانطور که در مقاله های قبلی اشاره شد، فریمورک اسپرینگ از …

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *