Spring注解
博客专区 > 信志 的博客 > 博客详情
Spring注解
信志 发表于1年前
Spring注解
  • 发表于 1年前
  • 阅读 57
  • 收藏 2
  • 点赞 1
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

@

 

@Qualifier 注释指定注入 Bean 的名称 作用

 

@Primary  当一个接口有多个实现的时候 优先选择哪个注解bean进行注入


public interface Singer {
    String sing(String lyrics);
}

#一种实现方式
@Component // 加注解,让spring识别
public class MetalSinger implements Singer{

    @Override
    public String sing(String lyrics) {
        return "I am singing with DIO voice: "+lyrics;
    }
}
#二种bean的调用
@Component
public class OperaSinger implements Singer{

    @Override
    public String sing(String lyrics) {
        return "I am singing in Bocelli voice: "+lyrics;
    }
}
但是如果一旦 OperaSinger 这个类加上了@Copmonent 或者 @Service 注解,有趣的事情就会发生,你会发现一个错误的结果或异常:
org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [main.service.Singer] is defined: expected single matching bean but found 2: metalSinger,operaSinger

提示很明确了,spring 根据类型无法选择到底注入哪一个。这个时候@Primay 可以闪亮登场了。
程序代码 程序代码

@Primary
@Component
public class OperaSinger implements Singer{

    @Override
    public String sing(String lyrics) {
        return "I am singing in Bocelli voice: "+lyrics;
    }
}


如果代码改成这样,再次运行,结果如下:
"I am singing in Bocelli voice: song lyrics", 用@Primary 告诉spring 在犹豫的时候优先选择哪一个具体的实现。调用

@RefreshScope 

在需要自动更新配置变量的Java类上,使用注解 @RefreshScope 修饰。

以后当我们再更新git上面的配置文件后,在 config-client 端执行POST 请求 http://localhost:8080/refresh 就可以更新刷新配置变量到内存中了

共有 人打赏支持
粉丝 7
博文 41
码字总数 20628
×
信志
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: