Spring 基于名称进行Autowiring

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

Spring Autowiring ByName意味着基于名称的自动控制。
如果任何Bean属性与完全另一个Bean的名称声明匹配,则Spring将自动处理依赖项。

我在这里拍摄了autowire"byname"的例子。
它几乎通过Setter方法与依赖项注入相同,具有XML配置文件的一些更改。

1.Country.java:

这是简单的Pojo类,其中有一些属性,所以国家有资本类的名称和对象。

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

package org.igi.theitroad;
 
public class Country {
 
    String countryName;
   
    Capital capitalObj;
    public String getCountryName() {
        return countryName;
    }
    public void setCountryName(String countryName) {
        this.countryName = countryName;
    }
 public Capital getCapitalObj() {
  return capitalObj;
 }
 public void setCapitalObj(Capital capitalObj) {
  this.capitalObj = capitalObj;
 }
   
}

2.Capital.java.

这也是一个名为"bueinkname"的一个属性的简单pojo类。

在package org.igi.theitroad下创建capital.java .java.above country class包含此类的对象。
内容以capical.java之后内容

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

3.BeanautowiringBytypemain.java.

此类包含main function.create beanautowiringbynamemeain.java在package org.igi.theitroad .copy之后内容进入beanautowiringbynamemem.java

package org.igi.javapostsforlearning;
 
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
public class BeanAutowiringByNameMain{
 
    public static void main(String[] args) {
        ApplicationContext appContext = new ClassPathXmlApplicationContext("ApplicationContext.xml");
        Country countryObj = (Country) appContext.getBean("country");
        String countryName=countryObj.getCountryName();
        String capitalName=countryObj.getCapitalObj().getCapitalName();
        System.out.println(capitalName+" is capital of "+countryName);
       
    }
}

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

4.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="country" class="org.igi.theitroad.Country" autowire="byName">
  <property name="countryName" value="Netherlands"
 </bean>
 <bean id="capital" class="org.igi.theitroad.Capital">
  <property name="capitalName" value="Amsterdam" 
 </bean>
</beans>

在此处,我们使用了Autowire属性并将其设置为"byName"。
所以,现在Spring容器将匹配在国家类中的"CainkObj"引用,其中包含XML配置文件中的其他bean的ID或者名称。
所以其中我们可以看到我们将bean与id为"capitalobj"

5.运行

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

Amsterdam is capital of Netherlands