在Spring中通过构造函数实现依赖性注入

时间:2020-02-23 14:35:41  来源:igfitidea点击:

顾名思义,使用构造函数Spring 容器将注入依赖项。

通过构造函数进行依赖性注入

1.Country.java:

我们将创建一个具有CountryName和Capital的简单类别。

在package org.arpit.onitorad.onit.copy下创建Country.java。
内容到Country.java之后。

package org.arpit.theitroad;
 
public class Country {
 
    String countryName;
    Capital capital;
   
    public Country(String countryName, Capital capital) {
        super();
        this.countryName = countryName;
        this.capital = capital;
    }
    public String getCountryName() {
        return countryName;
    }
   
    public Capital getCapital() {
        return capital;
    }
   
}

2.Capital.java.

在package org.arpit.theitroad。上面的Country类下创建Capital.java .Axove Country类包含此Class.Copy之后的对象。
内容进入Capical.java

package org.arpit.theitroad;
 
public class Capital {
 
    String capitalName;
 
    public String getCapitalName() {
        return capitalName;
    }
 
    public void setCapitalName(String capitalName) {
        this.capitalName = capitalName;
    }
}

3.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:aop="http://www.springframework.org/schema/aop"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
 
 <bean id="CountryBean" class="org.arpit.theitroad.Country">
  <constructor-arg index="0" type="java.lang.String" value="San Franceco" 
  <constructor-arg index="1" ref="CaptialBean" 
 </bean>
 <bean id="CaptialBean" class="org.arpit.theitroad.Capital">
  <property name="capitalName" value="Delhi" 
 </bean>
</beans>

其中我们已声明具有相应ID的两个bean。

1.具有ID的Cults作为"CountryBean"的2. Cults Capital使用ID作为"Ciumenebean"构造函数-Arg标记用于向Bean的构造函数提供参数.Type用于声明数据类型和索引定义构造函数参数中的位置。

在上面的XML中,通过了两个参数。

1.旧金山为String 2.CapitalBean的引用属性的值Tagis,用于将值分配给相应的属性。
所以在上面的XML文件中,我们为Capital类的CapualName属性分配了具有德里值的资本类

<property name="Name Of Attribute" value="Value Of attribute to be assigned"

属性的REF Tagis用于分配对相应属性的引用。
所以在上面的XML文件中,我们已经为Country类的资本属性指定了Capital类的引用。

<property name="Name Of Attribute" value="id of referencing bean"

4.ConstructordImain.java.

此类包含main function.create构造ideain.java下包org.arpit.theitroad。

package org.arpit.theitroad;
 
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
 
public class ConstructorDIMain{
 
    public static void main(String[] args) {
        ApplicationContext appContext = new ClassPathXmlApplicationContext("ApplicationContext.xml");
 
        Country countryObj = (Country) appContext.getBean("CountryBean");
        String countryName=countryObj.getCountryName();
        String capitalName=countryObj.getCapital().getCapitalName();
        System.out.println(capitalName+" is capital of "+countryName);
       
    }
}

我们可以在此处注意到,我们在此处使用ClassPathxmlApplicationContext来获取bean。
有多种方法来获取beans.in Hello World示例我们已使用XMLBeanFactory来获取beans。

5.运行

当我们将运行上面的应用程序时,我们将按照输出作为输出。

Delhi is capital of San Franceco