zoukankan      html  css  js  c++  java
  • @Primary 使用

    造轮子的一个小小的发现

    当一个接口被两个service实现时,controller调用接口实现功能,会报错,提示开发者指定service,官方是建议你使用@Qualifier来区分的,但是,总有另一种方法实现的。

    场景

    public interface Hi{ String hi(); } 
    
    @Service
    public class Hi1 implements Hi{
        @Override
        public String hi() {
            return "hi1";
        }
    }
    
    @Service
    public class Hi2 implements Hi{
        @Override
        public String hi() {
            return "hi2";
        }
    }
    @Controller
    public class SingerService {
        @Autowired
        private Hi hi;
    
        public String sing(){
            return hi.hi();
        }
    }
     

    此时没指定具体的接口实现类,spring会报错,但是只要将Hi2改成

    @Service
    @Primary
    public class Hi2 implements Hi{
        @Override
        public String hi() {
            return "hi2";
        }
    }

     命令行就会输出

    hi2

    @Primary就是默认的意思,而他的使用情况当然不是用于service层了,而是在造轮子的时候,往往一个基本接口类有多次实现,我们只要给其中一个实现加上@Primary,那么在使用这个接口类的时候就不用每次都@Qualifier了,而且对于大多数开发者而言,只要理解使用默认的功能就足够了。

  • 相关阅读:
    每天一个linux命令
    Python 面向对象-下篇
    Python 面向对象-上篇
    何时会发生隐式类型转换
    C++类型检查
    无符号保留原则
    bool类型为什么可以当做int
    在类的外部定义成员函数注意形式
    局部类
    命名规范
  • 原文地址:https://www.cnblogs.com/ydymz/p/9014571.html
Copyright © 2011-2022 走看看