zoukankan      html  css  js  c++  java
  • spring笔记-@Primary注解

    1.问题

    当一个接口有2个不同实现时,使用@Autowired注解时会报org.springframework.beans.factory.NoUniqueBeanDefinitionException异常信息

    2.方案1-@Qualifier

    使用Qualifier注解,选择一个对象的名称,通常比较常用

    3. 方案2-@Primary

    Primary可以理解为默认优先选择,同时不可以同时设置多个,
    内部实质是设置BeanDefinition的primary属性

    示例

    @Component("metalSinger") // 加注解,让spring识别
    public class MetalSinger implements Singer{
    
        @Override
        public String sing(String lyrics) {
            return "I am singing with DIO voice: "+lyrics;
        }
    }
    
    @Primary
    @Component("operaSinger")
    public class OperaSinger implements Singer {
        @Override
        public String sing(String lyrics) {
            return "I am singing in Bocelli voice: "+lyrics;
        }
    }
    
    public interface Singer {
        String sing(String lyrics);
    }
    
    @Component
    public class SingerService {
        private static final Logger logger = LoggerFactory.getLogger(SingerService.class);
        @Autowired
        @Qualifier
        private Singer singer;
        public String sing(){
            return singer.sing("song lyrics");
        }
    
        public static void main(String[] args) {
    
            ApplicationContext context = new AnnotationConfigApplicationContext("context.annotation.primary");
            SingerService singerService = context.getBean(SingerService.class);
            System.out.println(singerService.sing());
        }
    
    }


  • 相关阅读:
    antd的form表单4.0
    antd的select搜索展现错误
    ts的枚举类型简化if else if判断
    深入解读webpack
    常用es6语法总结
    手动配置webpack
    apply,all,bind的区别
    面试题小结
    react中根据后台值动态配置
    react动态路由以及获取动态路由
  • 原文地址:https://www.cnblogs.com/duanxz/p/9708196.html
Copyright © 2011-2022 走看看