Spring自動組立の二義性例解析


この文章は主にSpring自動組立の二義事例解析を紹介しています。ここでは例示コードによって紹介された非常に詳細で、皆さんの学習や仕事に対して一定の参考学習価値があります。必要な友達は下記を参照してください。
1.Springの自動組立(@Autowired)でビームアプリケーションを構造パラメータと属性に注入できることを知っていますが、一つのbeanだけが必要な結果にマッチする場合、自動組立が有効になります。複数のbeanが同一の結果と整合すると,この曖昧性はSpringの自動組立特性を阻害し,パラメータまたは方法パラメータを構築する。
大きい話をしてください。もし私たちがデザートインターフェースを持っていたら、美味しい方法があります。このインターフェースを実現するには、Spring容器はビスケットを選んで組み立てます。しかし、ケーキのインターフェースを実現する時には、Springはどの種類を選んで組み立てるか分かりません。コードに!
(1)スライスのインターフェース

package jinjin;
/**
 * 
 * @author   oubai
 *      
 */
public interface Dessert {
  public void good();
}
(2)ビスケットがあります。このインターフェースを実現します。

package jinjin;

import org.springframework.stereotype.Component;
/**
 * @author   oubai
 *         
 */
@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 {
  
}
実行結果

(5)ケーキ類の実現インターフェースをもう一つ追加する。

package jinjin;

import org.springframework.stereotype.Component;
/**
 * @author   oubai
 *           
 */
@Component
public class Cake implements Dessert {

  @Override
  public void good() {
    System.out.println("    !");
  }
}
(6)運転を継続して結果を見る

NoUnique BeanDefinitionExceptionの異常を報告しました。これは自動組立の曖昧性です。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。