配置多数据源时,@Primary、@Qualifire、@ConfigurationProperties的使用

文章内容分别来自于:
https://www.cnblogs.com/wuqinglong/p/5845375.html,作者:吴庆龙
https://www.cnblogs.com/1540340840qls/p/6970692.html,作者:技术让世界更精彩
https://blog.csdn.net/u012129558/article/details/78225935,作者:will的猜想
文章主要用于自己学习SpringBoot,方便以后的查询

@Primary、@Qualifire、@Autowired、@Resource的区别

@Resource
  • 默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来注入。
  • 它有两个属性是比较重要的:
    • name: Spring 将 name 的属性值解析为 bean 的名称, 使用 byName 的自动注入策略
    • type: Spring 将 type的属性值解析为 bean 的类型,使用 byType 的自动注入策略
    • 注: 如果既不指定 name 属性又不指定 type 属性,Spring这时通过反射机制使用 byName 自动注入策略

@Resource的装配顺序
1. 如果同时指定了 name 属性和 type 属性,那么 Spring 将从容器中找唯一匹配的 bean 进行装配,找不到则抛出异常
2. 如果指定了 name 属性值,则从容器中查找名称匹配的 bean 进行装配,找不到则抛出异常
3. 如果指定了 type 属性值,则从容器中查找类型匹配的唯一的 bean 进行装配,找不到或者找到多个都会抛出异常
4. 如果都不指定,则会自动按照 byName 方式进行装配, 如果没有匹配,则回退一个原始类型进行匹配,如果匹配则自动装配

@Autowired
  • 默认是按照类型进行装配注入,默认情况下,它要求依赖对象必须存在,如果允许 null 值,可以设置它 required 为false。
  • 如果我们想要按名称进行装配的话,可以添加一个 @Qualifier 注解解决。
@Primary
  • 意思是在众多相同的bean中,优先使用用@Primary注解的bean.
@Qualifire
  • 让Spring可以按照Bean名称进入注入@Autowired
@Component
@Qualifier("crispy")
public class Cookie implements Dessert {
    @Override
    public void amI() {
        System.out.println("I am cookie");
    }
}
@Component
public class AbrahamLincoln {
    private Dessert dessert;

    public Dessert getDessert() {
        return dessert;
    }
    @Autowired
    @Qualifier("crispy")
    public void setDessert(Dessert dessert) {
        this.dessert = dessert;
    }
}

@ConfigurationProperties和@PropertySource

两者都是用来读取Spring的配置文件,有3种配置方式

第一种
  • resource中创建author.properties,并指明@PropertySource("author.properties"),即默认在resource下找此文件,找到返回一个值,找不到则报错,报文件找不到,打不开。
    根目录下使用@PropertiesSource
第二种
  • resource下创建config文件夹,把author.properties放在confg下,访问方式为:@PropertySource("classpath:config/bookl.properties")
    指定目录下的properties
第三种
  • 直接写在application.properties中(不建议这么做,但如果是全局变量提倡这种方法),当写在此文件中时,不需要指明资源文件路径,只需要指明前缀即可
    直接使用@ConfigurationPropertes
    配置文件内容
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值