真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Spring自動裝配的二義性實(shí)例解析

這篇文章主要介紹了Spring 自動裝配的二義性實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

成都創(chuàng)新互聯(lián)公司主營丘北網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件定制開發(fā),丘北h5成都微信小程序搭建,丘北網(wǎng)站營銷推廣歡迎丘北等地區(qū)企業(yè)咨詢

1.我們知道可以用Spring的自動裝配(@Autowired)將Bean應(yīng)用注入到構(gòu)造參數(shù)和屬性中,但是,注意了,僅有一個bean匹配需要的結(jié)果時(shí),自動裝配才可以生效。如果有多個bean匹配同一個結(jié)果,這種歧義性會阻礙Spring自動裝配屬性,構(gòu)造參數(shù)或方法參數(shù)。

大白話說一下,就如我們有一個甜片接口(Dessert)里面有一個好吃的方法(good)當(dāng)我們只有一個餅干實(shí)現(xiàn)這個接口時(shí),Spring容器會選擇餅干來裝配,但是還有一個蛋糕實(shí)現(xiàn)接口時(shí),這個時(shí)候Spring就不知道去選擇哪個實(shí)現(xiàn)類來裝配了。代碼上!

(1)甜片的接口

package jinjin;
/**
 * 
 * @author 雪飛oubai
 *  甜點(diǎn)接口
 */
public interface Dessert {
  public void good();
}

(2)有餅干實(shí)現(xiàn)這個接口

package jinjin;

import org.springframework.stereotype.Component;
/**
 * @author 雪飛oubai
 *  餅干類實(shí)現(xiàn)接口
 */
@Component
public class Cookies implements Dessert{
  
  @Override
  public void good() {
    System.out.println("餅干好吃!");
  }
}

(3)測試類,使用@Autowired來自動裝配

package jinjin;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
 * @author 雪飛oubai
 *  測試一下
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=ConfigTest.class)
public class CommTest {
  
  @Autowired
  private Dessert dessert;
  
  @Test
  public void test(){
    dessert.good();
  }
  
}

(4)java配置類

package jinjin;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/**
 * @author 雪飛oubai
 *  java配置類
 */
@Configuration
@ComponentScan
public class ConfigTest {
  
}

運(yùn)行結(jié)果

Spring 自動裝配的二義性實(shí)例解析

(5)再加一個蛋糕類實(shí)現(xiàn)接口

package jinjin;

import org.springframework.stereotype.Component;
/**
 * @author 雪飛oubai
 *  蛋糕類實(shí)現(xiàn)甜片接口
 */
@Component
public class Cake implements Dessert {

  @Override
  public void good() {
    System.out.println("蛋糕好吃!");
  }
}

(6)繼續(xù)運(yùn)行看結(jié)果

Spring 自動裝配的二義性實(shí)例解析

報(bào)了NoUniqueBeanDefinitionException的異常。這就是自動裝配的歧義性

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


網(wǎng)站標(biāo)題:Spring自動裝配的二義性實(shí)例解析
文章起源:http://weahome.cn/article/gdpidj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部