使用 @PropertySource 覆盖属性的说明
Posted 小企鹅推雪球!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 @PropertySource 覆盖属性的说明相关的知识,希望对你有一定的参考价值。
使用 @PropertySource 覆盖属性的说明
-
例如,给定两个属性文件 a.properties 和 b.properties,请考虑以下两个配置类,它们使用 @PropertySource 注解来引用它们
@Configuration @PropertySource("classpath:/com/myco/a.properties") public class ConfigA @Configuration @PropertySource("classpath:/com/myco/b.properties") public class ConfigB
-
覆盖顺序取决于在应用程序上下文中注册这些类的顺序
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); ctx.register(ConfigA.class); ctx.register(ConfigB.class); ctx.refresh();
-
因为 ConfigB 是最后注册的,所以 b.properties 中的属性将覆盖 a.properties 中存在的所有重复项。
-
使用 @PropertySource 注解严格控制属性源的顺序可能是不可行的。例如,如果上面的 @Configuration 类是通过组件扫描注册的,则顺序很难预测
-
根据 Java8 的约定,@PropertySource 注解可以重复。但是,所有此类 @PropertySource 注解都需要在同一级别上声明:直接在配置类上声明,或者在同一自定义注解上作为元注解声明。不建议将直接注解和元注解混合使用,因为直接注解将有效覆盖元注解
以上是关于使用 @PropertySource 覆盖属性的说明的主要内容,如果未能解决你的问题,请参考以下文章
@Import 覆盖 Spring @PropertySource
如何创建依赖于 Spring Bean 的自定义 Spring PropertySource