方式一
在application.yml/properties
配置文件内可以直接使用占位符来进行配置的相互引用,如下所示:
#自定义的属性,引用了spring.application.name
guo:
name: ${spring.application.name}
spring:
application:
name: sc-gateway-application
在上面的配置中,name
配置直接引用了spring.application.name
的配置值,这样我们在系统中通过@Value("${guo.name}")
或者通过@ConfigurationProperties
方式使用时,得到的值都为sc-gateway-application
。
方式二
占位符——形如:${guo.name}
是一种灵活的配置方式,可以让我们很灵活的使用配置参数,这种方式可以从Environment
内获取对应的配置值。
在实际部署应用程序时,有很多通过命令行参数方式实现配置是动态,不过SpringBoot所提供的配置参数名称都比较长,对此我们完全可以利用占位符配置方式实现自定义参数名。
占位符是从Environment
内读取对应的配置值,而命令行参数在应用程序启动时会被一并加入到Environment
中,因此也就实现了占位符动态配置,其实这个“短”的含义,是你定义的新的配置名称比较短而已。
假设我们的guo.name
值需要动态指定,我们自定义一个短变量名称my-name
,配置文件改为:
#自定义的属性,引用了spring.application.name
guo.name=${my-name:erbadagang}
在运行前,配置my-name
的值为trek
:
运行返回:configname = trek
实际运行中多数是使用jar命令启动,所以上图配置方法的等同: java -jar project-1.0.0.SNAPSHOT.jar --my-name=trek
。
方式三
像上图红色标注的,都会被完整的替换为根目录,这样在安装项目时,只需修改一处就行了。