春天自动装配的二义性实例解析

  

这篇文章主要介绍了弹簧自动装配的二义性实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

  

1。我们知道可以用春天的自动装配(@ autowired)将Bean应用注入到构造参数和属性中,但是,注意了,仅有一个Bean匹配需要的结果时,自动装配才可以生效。如果有多个Bean匹配同一个结果,这种歧义性会阻碍弹簧自动装配属性,构造参数或方法参数。

  

大白话说一下,就如我们有一个甜片接口(甜点)里面有一个好吃的方法(好)当我们只有一个饼干实现这个接口时,春容器会选择饼干来装配,但是还有一个蛋糕实现接口时,这个时候春天就不知道去选择哪个实现类来装配了。代码上!

  

(1)甜片的接口

        包金近;/* *   *   * @author雪飞oubai   *甜点接口   */公共接口甜点{   公共空间好();   }      

(2)有饼干实现这个接口

        包金近;      进口org.springframework.stereotype.Component;/* *   * @author雪飞oubai   *饼干类实现接口   */@ component   公共类饼干实现甜点{      @Override   公共空间好(){   System.out.println(“饼干好吃!”);   }   }      

(3)测试类,使用@ autowired来自动装配

        包金近;      进口org.junit.Test;   进口org.junit.runner.RunWith;   进口org.springframework.beans.factory.annotation.Autowired;   进口org.springframework.test.context.ContextConfiguration;   进口org.springframework.test.context.junit4.SpringJUnit4ClassRunner;/* *   * @author雪飞oubai   *测试一下   */@RunWith (SpringJUnit4ClassRunner.class)   @ContextConfiguration(类=ConfigTest.class)   公开课CommTest {      @ autowired   私人甜品甜点;      @Test   公共空白测试(){   dessert.good ();   }      }      

(4) java配置类

        包金近;      进口org.springframework.context.annotation.ComponentScan;   进口org.springframework.context.annotation.Configuration;/* *   * @author雪飞oubai   * java配置类   */@ configuration   @ComponentScan   公开课ConfigTest {      }      

运行结果

  

春天自动装配的二义性实例解析

  

(5)再加一个蛋糕类实现接口

        包金近;      进口org.springframework.stereotype.Component;/* *   * @author雪飞oubai   *蛋糕类实现甜片接口   */@ component   公共类蛋糕实现甜点{      @Override   公共空间好(){   System.out.println(“蛋糕好吃!”);   }   }      

(6)继续运行看结果

  

春天自动装配的二义性实例解析

  

报了NoUniqueBeanDefinitionException的异常。这就是自动装配的歧义性

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

春天自动装配的二义性实例解析