zoukankan      html  css  js  c++  java
  • SPRING IN ACTION 第4版笔记-第三章ADVANCING WIRING-004-消除bean自动装配的歧义@Primary

    一、

    假设有如下三个类实现同一个接口,则自动装配时会产生歧义

     1 @Component
     2 public class Cake implements Dessert { ... }
     3 @Component
     4 public class Cookies implements Dessert { ... }
     5 @Component
     6 public class IceCream implements Dessert { ... }
     7 
     8 @Autowired
     9 public void setDessert(Dessert dessert) {
    10 this.dessert = dessert;
    11 }

    二、@Primary的3种用法

    Let’s say that ice cream is your favorite dessert. You can express that favorite choice
    in Spring using the @Primary annotation. @Primary can be used either alongside
    @Component for beans that are component-scanned or alongside @Bean for beans
    declared in Java configuration. For example, here’s how you might declare the
    @Component -annotated IceCream bean as the primary choice:

    1.在自动扫描

    @Component
    @Primary
    public class IceCream implements Dessert { ... }

    2.在java配置文件中

    @Bean
    @Primary
    public Dessert iceCream() {
        return new IceCream();
    }

    3.xml配置文件

    1 <bean id="iceCream"
    2 class="com.desserteater.IceCream"
    3 primary="true" />

    如果有两个合适的bean都标记为@Primary,则Spring还是无法确定要装配哪个bean,这时要用@Qulifier来解决歧义

  • 相关阅读:
    运算放大器和比较器的区别
    求和电路
    差分放大电路
    含T型网络的反相放大器
    三运放仪用放大器
    cmd window关闭端口程序
    List及其实现类
    docker-compose安装elasticsearch集群+kibana
    sp_spaceused 查询表或者库的大小
    转载:Windows下利用bat批量打开程序
  • 原文地址:https://www.cnblogs.com/shamgod/p/5235661.html
Copyright © 2011-2022 走看看