@Value(“
a
p
p
.
n
a
m
e
"
)
p
r
i
v
a
t
e
S
t
r
i
n
g
n
a
m
e
;
@
V
a
l
u
e
(
"
{app.name}") private String name; @Value("
app.name")privateStringname;@Value("{app.age}”)
private int age;
如果application-prod.properties和application.properties都有app.name和app.age,那么以prod中配置的值为主。
spring.profile.include属性
在application-prod.properties还可以加入
spring.profiles.include=redis,db
这是无条件地添加活动配置文件(以逗号分隔)。此属性添加的配置文件不会根据某些条件或命令行开关决定是否添加,而是始终无条件添加它们。
上述配置是就加载了:
src/main/resources/application-redis.properties
src/main/resources/application-db.properties
这两个配置文件中的内容。即使这些文件在其他子项目resources中,也可以被加载
我们只需要在rb-user-server、rb-goods-server等引用项目中引用rb-common-config这个子项目。并且在项目中的application.yml配置文件中,加入
spring:
profiles:
include:
- redis
- db
- nacos
就可以引用rb-common-config中的配置文件了。
有些细心的小朋友会问,那个rb-common-config项目的配置文件是在resources目录下的config文件夹下的哦,怎么也会加载呢?
配置文件目录
SpringBoot配置文件可以放置在多种路径下,不同路径下的配置优先级有所不同。
可放置目录(优先级从高到低)
file:./config/ (当前项目路径config目录下);
file:./ (当前项目路径下);
classpath:/config/ (类路径config目录下);
classpath:/ (类路径config下).
优先级由高到底,高优先级的配置会覆盖低优先级的配置;
SpringBoot会从这四个位置全部加载配置文件并互补配置;
我们可以从ConfigFileApplicationListener这类便可看出,其中DEFAULT_SEARCH_LOCATIONS属性设置了加载的目录:
所以之前的配置文件在config目录中也照样有效,而且优先级高一级哦。
到这里为止,我们很好的把公共的配置项,转移到子项目rb-common-config文件下了,其中的关键点就是,在引用项目加入spring.profiles.include配置
多环境配置
在开发过程中,我们都会区分开发环境,测试环境,预演环境,生产环境等;不同环境的配置参数是不一样的。分布式项目中如何应用呢?
网上大多数介绍是针对单个项目工程的,利用上面介绍的spring.profiles.active配置来进行区分不同的环境
src/main/resources/application.properties(默认的)
src/main/resources/application-dev.properties(开发环境)
src/main/resources/application-prod.properties(生产环境)
想要什么环境,在启动的时候
java -jar xxx.jar --spring.profiles.active=prod
上面就是应用了生产环境了。
这种方式是否可以应用到分布式多项目中,也是可以的,我们可以把rb-common-config中也配置多个配置文件,如:
src/main/resources/config/application-devDB.properties(开发环境)
src/main/resources/config/application-devRedis.properties(开发环境)
src/main/resources/config/application-prodDB.properties(生产环境)
src/main/resources/config/application-prodRedis.properties(生产环境)
然后在引用项目中如rb-user-server中
application-dev.properties加入
spring.profiles.include=devDB,devRedis
application-prod.properties加入
spring.profiles.include=prodDB,prodRedis
启动rb-user-server.jar
java -jar rb-user-server.jar --spring.profiles.active=prod
这样就做到了区分多环境的目的。
多环境配置问题总结
在上面的多环境配置中,我们需要在各个项目中,新建多个**properties文件,**区分不同的环境,这个是比较麻烦的事情,而且不够优雅。
遗留问题一:
那有没有一种方案,不需要建那么多的配置文件,每个项目只需要必须的配置文件就行了呢?
遗留问题二:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后
2020年在匆匆忙忙慌慌乱乱中就这么度过了,我们迎来了新一年,互联网的发展如此之快,技术日新月异,更新迭代成为了这个时代的代名词,坚持下来的技术体系会越来越健壮,JVM作为如今是跳槽大厂必备的技能,如果你还没掌握,更别提之后更新的新技术了。
更多JVM面试整理:
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!
g-Vi0skhkB-1711903096397)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!