码迷,mamicode.com
首页 > 其他好文 > 详细

@Primary 使用

时间:2018-05-09 16:01:18      阅读:1078      评论:0      收藏:0      [点我收藏+]

标签:rri   str   bsp   prim   官方   报错   接口   开发者   理解   

造轮子的一个小小的发现

当一个接口被两个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了,而且对于大多数开发者而言,只要理解使用默认的功能就足够了。

@Primary 使用

标签:rri   str   bsp   prim   官方   报错   接口   开发者   理解   

原文地址:https://www.cnblogs.com/ydymz/p/9014571.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!