配置文件中的$和@@
0、前言
借鉴文章:
https://blog.csdn.net/Saintmm/article/details/124603343
https://blog.csdn.net/ster_ben/article/details/119295815
在yml配置文件中,可以使用${}和@{}来引用其他配置项的值作为配置项的值。
spring:
application:
name: @artifactId@
spring:
cloud:
nacos:
discovery:
server-addr: ${NACOS_HOST:register}:${NACOS_PORT:8848}
1、$符号
以${NACOS_HOST:register}
作为例子举例说明$
${NACOS_HOST:register}
中的 NACOS_HOST
是一个占位符,它可以从不同的来源获取值,如果NACOS_HOST
获取不到任何值,就取后面的register
作为值。以下是NACOS_HOST
可能的来源:
①环境变量:NACOS_HOST
可以是一个在操作系统环境中定义的环境变量。在运行应用程序之前,可以通过设置环境变量来为其提供值。
设置环境变量,如果值有多个,以;
分隔
②命令行参数:你可以在启动应用程序时,通过命令行参数传递 NACOS_HOST
的值。例如,在命令行中指定 --NACOS_HOST=127.0.0.0.1
。
设置运行参数,以--k=v
的方式设置一个参数,每个参数需要以空格隔开
class
或者jar
文件之后的字符串(--k=v
)会传到 main
函数的 String[]
类型的 args
参数,多个参数用空格隔开
③配置文件:NACOS_HOST
的值也可以从其他的配置文件(如 properties 文件)中读取。在读取 YAML 配置文件之前,可以先加载这些配置文件,然后将属性值传递给应用程序。
以上是常见的获取 NACOS_HOST
值的方式,具体取决于你的应用程序的部署环境和需求。请根据实际
情况选择合适的方法来设置或提供 NACOS_HOST
的值
假设你有一个名为 custom-config.yml
的配置文件,在该文件中定义了 NACOS_HOST
的值,你可以在当前配置文件中通过以下方式指定从该文件中获取值:
classpath:custom-config.yml
表示 custom-config.yml
文件位于类路径下,如果文件位于其他位置,可以根据实际路径进行调整
spring:
config:
import: classpath:custom-config.yml
custom-config.yml
中的值:
NACOS_HOST: 127.0.0.1
这样,在加载配置文件时,会自动读取 custom-config.yml
文件,并将其中的属性值合并到当前的配置中。这样,${NACOS_HOST:pigx-register}
将会使用 custom-config.yml
中定义的 NACOS_HOST
值,如果不存在,则使用默认值 pigx-register
。
同样也可以来自当前配置文件中的其他配置项,如下的spring.cloud.nacos.config.server-addr 通过
$引用的值就是来自
spring.cloud.nacos.discovery.server-addr`
spring:
cloud:
nacos:
username: @nacos.username@
password: @nacos.password@
discovery:
server-addr: ${NACOS_HOST:hs-register}:${NACOS_PORT:8848}
config:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
2、@@符号
一帮使用*@@* 获取Maven的工程属性
spring:
application:
name: @artifactId@
其取值来自pom.xml中的artifactId
……
<artifactId>pigx-upms-biz</artifactId>
……
3、补充
① IDEA中Run/Debug Configurations中的三个主要内容进行总结
- VM options
设置JVM参数 或 系统属性,需要以 -D 或 -X 或 -XX 开头,每个参数使用空格隔开
- Program arguments
设置运行参数,以--k=v
的方式设置一个参数,每个参数需要以空格隔开
- Environment variable
设置环境变量,多个以;
分隔
②运行java时的可选配置信息(options)
运行Java程序的时候,一般有两种方式:
- 运行某个Class类(class表示的是包含main函数的class名称(含包名))
java [options] class [arguments]
- 运行某个jar包(jar和xxx.jar配对使用,-jar指示用jar方式启动,而xxx.jar表示的时jar文件的名称)
java [options] -jar xxx.jar [arguments]
其中[options]
表示Java运行环境的可选配置信息,其会影响到java运行环境,是性能调优的关键所在,并且可以传多个选择项。
[arguments]
表示的是程序自身的参数,会被传到main函数的参数数组里面,为程序自己所使用。
Java启动命令可选项(options)大致可分为标准和非标准两种,非标准的可选项不保证在所有平台上都实现,并且在未来的某个版本中可能会被修改且不告知,相对而言比较不稳定(Unstable)。
从具体使用上而言可以分为三种,分别为:标准可选项(Standard options)、非标准可选项(Nonstandard Options) 和 不稳定(Unstable)的选项。
1)Standard Options
标准可选项常用的为-Dkey=value,通过其可以设定系统属性值,比如编码-Dfile.encoding=UTF-8。可以通过System.getProperty(“keyname”)来获取系统属性的值。
详细可以参考博文:Java程序启动时-D指定参数详解
2)Nonstandard Options
非标准可选项都以 -X 开始,常见于JVM调优配置,比如:
-
-Xms
设置Java堆的初始化大小。例如 -Xms1024m,Java堆的初始化大小就设置为1G。
-
-Xmx
设置Java堆的最大值。例如 -Xmx3072m,Java堆的最大值就设置为3G。
-
-Xss
设置Java线程栈的值。例如 -Xss128m,Java线程栈的值就设置为128兆。
-
…
3)Unstable Options
不稳定的选项也是非标准的,其相当于非标准可选项的一个子集,都以-XX开头;同样常见于JVM调优配置,比如:
- -XX:+UseG1GC
使用G1垃圾回收器。 - -XX:+PrintGCDetails
GC日志中输入垃圾回收的详细信息。 - -XX:OnOutOfMemoryError
OOM时输出dump文件。 - ……
③主机名解析
电脑上的hosts
文件是一个文本文件,用于在计算机上将主机名解析为 IP 地址
它通常位于操作系统的系统目录下,比如在 Windows 上的路径是 C:\Windows\System32\drivers\etc\hosts
,在 macOS 和 Linux 上的路径是 /etc/hosts
。
hosts
文件中包含了一系列的条目,每个条目由 IP 地址和对应的主机名组成,中间使用空格或制表符分隔。当计算机尝试访问某个主机名时,首先会查找hosts
文件,如果在该文件中找到对应的条目,则会将主机名解析为相应的 IP 地址。
这可以用于在本地进行主机名解析,以避免依赖 DNS 服务器。你可以向hosts
文件添加自定义的条目,将特定的主机名映射到指定的 IP 地址。这在开发、测试和调试环境中非常有用,例如可以将某个域名指向本地的开发服务器。
对于下面这个,如果NACOS_HOST
不存在,我们会选择register
默认值
server-addr: ${NACOS_HOST:register}:${NACOS_PORT:8848}
我们可以设置register
的ip地址,这样当应用程序读取YAML配置文件时,如果配置文件中的属性值是一个主机名,应用程序会根据自身的解析规则来解析这个主机名。
推荐一个快速host
配置软件:SwitchHosts