配置文件中的$和@

2023-12-16

配置文件中的$和@@

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

配置文件中的$和@ 的相关文章

  • Java中字符串中特殊字符的替换

    Java中如何替换字符串 E g String a adf sdf 如何替换和避免特殊字符 您可以删除除此之外的所有字符可打印的 ASCII 范围 http en wikipedia org wiki ASCII ASCII printab
  • Eclipse 在源代码管理中保存操作

    我们希望找到一种在签入之前执行代码标准的 轻量级 方法 我们真的很喜欢使用 Eclipse 内置的想法保存操作 go to Preferences gt gt Java gt gt Editor gt gt Save Actions 其中有
  • Java:如何从转义的 URL 获取文件?

    我收到了一个定位本地文件的 URL 事实上我收到的 URL 不在我的控制范围内 URL 按照 RFC2396 中的定义进行有效转义 如何将其转换为 Java File 对象 有趣的是 URL getFile 方法返回一个字符串 而不是文件
  • 运行具有外部依赖项的 Scala 脚本

    我在 Users joe scala lib 下有以下 jar commons codec 1 4 jar httpclient 4 1 1 jar httpcore 4 1 jar commons logging 1 1 1 jar ht
  • JavaFX 中具有自定义内容的 ListView

    How i can make custom ListView with JavaFx for my app I need HBox with image and 2 Labels for each line listView 您可以通过查看
  • 按第一列排序二维数组,然后按第二列排序

    int arrs 1 100 11 22 1 11 2 12 Arrays sort arrs a b gt a 0 b 0 上面的数组已排序为 1 100 1 11 2 12 11 22 我希望它们按以下方式排序a 0 b 0 首先 如果
  • Cassandra java驱动程序协议版本和连接限制不匹配

    我使用的java驱动程序版本 2 1 4卡桑德拉版本 dsc cassandra 2 1 10cql 的输出给出以下内容 cqlsh 5 0 1 Cassandra 2 1 10 CQL spec 3 2 1 Native protocol
  • 画透明圆,外面填充

    我有一个地图视图 我想在其上画一个圆圈以聚焦于给定区域 但我希望圆圈倒转 也就是说 圆的内部不是被填充 而是透明的 其他所有部分都被填充 请参阅这张图片了解我的意思 http i imgur com zxIMZ png 上半部分显示了我可以
  • Hazelcast 分布式锁与 iMap

    我们目前使用 Hazelcast 3 1 5 我有一个简单的分布式锁定机制 应该可以跨多个 JVM 节点提供线程安全性 代码非常简单 private static HazelcastInstance hInst getHazelcastIn
  • 如何使用 Maven 打包并运行具有依赖项的简单命令行应用程序?

    我对 java 和 Maven 都是全新的 所以这可能非常简单 如果我遵循maven2hello world此处的说明 http maven apache org guides getting started maven in Five m
  • Java 中的“Lambdifying”scala 函数

    使用Java和Apache Spark 已用Scala重写 面对旧的API方法 org apache spark rdd JdbcRDD构造函数 其参数为 AbstractFunction1 abstract class AbstractF
  • 很好地处理数据库约束错误

    再一次 它应该很简单 我的任务是在我们的应用程序的域对象中放置一个具有唯一约束的特定字段 这本身并不是一个很大的挑战 我刚刚做了以下事情 public class Location more fields Column unique tru
  • 如何在selenium服务器上提供自定义功能?

    我知道可以通过某种方法获得一些硒功能 其中之一如下 driver getCapabilities getBrowserName 它返回浏览器名称的值 但如果它指的是一个可用的方法 如果我没有误解的话 这似乎与自定义功能有关 就像我的意思是
  • Struts 2 + Sitemesh 3 集成 - FreemarkerDecoratorServlet 中的 NPE

    我将 Struts 2 版本 2 3 14 3 与 Sitemesh 3 版本 3 0 alpha 2 一起使用 并且在某些情况下遇到 NullPointerException 首先 这是我的 web xml 中的 struts2 site
  • 替换后增量

    我自己已经有一个问题了 但我想扩展它后增量示例 https stackoverflow com questions 51308967 post increment with example char a D int b 5 System o
  • HQL Hibernate 内连接

    我怎样才能在 Hibernate 中编写这个 SQL 查询 我想使用 Hibernate 来创建查询 而不是创建数据库 SELECT FROM Employee e INNER JOIN Team t ON e Id team t Id t
  • Eclipse 中 Spring MVC 模型对象的 (jsp /jstl) 视图中的代码辅助

    在 Spring MVC 中 当将对象放置在视图模型中时 如下所示 public String getUser Model model fetch user model addAttribute user user return viewN
  • 具有特定参数的 Spring AOP 切入点

    我需要创建一个我觉得很难描述的方面 所以让我指出一下想法 com x y 包 或任何子包 中的任何方法 一个方法参数是接口 javax portlet PortletRequest 的实现 该方法中可能有更多参数 它们可以是任何顺序 我需要
  • 调整添加的绘制组件的大小和奇怪的摆动行为

    这个问题困扰了我好几天 我正在制作一个特殊的绘画程序 我制作了一个 JPanel 并添加了使用 Paint 方法绘制的自定义 jComponent 问题是 每当我调整窗口大小时 所有添加的组件都会 消失 或者只是不绘制 因此我最终会得到一个
  • GUI Java 程序 - 绘图程序

    我一直试图找出我的代码有什么问题 这个想法是创建一个小的 Paint 程序并具有红色 绿色 蓝色和透明按钮 我拥有我能想到的让它工作的一切 但无法弄清楚代码有什么问题 该程序打开 然后立即关闭 import java awt import

随机推荐

  • 《VirtualLab Fusion物理光学实验教程》好书分享

    目录 第一章 物理光学概念介绍 6 1 1 几何光学和光线追迹 6 1 2 物理光学和光场追迹 6 1 3 电场 磁场以及坡印廷矢量 8 1 4 振幅 相位及实部和虚部 9 1 5 振幅 相位与偏振 10 1 6菲涅尔公式 11 1 7 全
  • SqlServer_更改数据类型

    SQL server修改数据类型 使用以下命令可以进行修改 Alter table monthly import demand alter column ImportWeight DECIMAL 18 4
  • 3、Linux_系统用户管理

    1 Linux 用户管理 1 1概述 Linux系统是一个多用户多任务的操作系统 任何一个要使用系统资源的用户 都必须首先向系统管理员申请一个账号 然后以这个账号的身份进入系统 root 用户是系统默认创建的管理员账号 1 2添加用户 语法
  • Java_EasyExcel_导入_导出Java-js

    easyExcel导入 从easyexcel官网中拷贝过来 使用到的 这是使用监听器的方法 EasyExcel read file getInputStream BaseStoreDataExcelVo class new ReadList
  • 利用迈克尔逊干涉仪和傅里叶变换光谱法测量相干性

    摘要 在干涉仪中 条纹的对比度可能取决于光源的相干特性 例如 在具有一定带宽的光源的迈克尔逊干涉仪中 干涉条纹对比度随光程差的不同而变化 通过测量可动镜不同位置的干涉图对比度 可以得到光源的相干长度 典型的傅里叶变换光谱通常基于这种类型的光
  • 千呼万唤始出来!《“外研社·国才杯”竞赛一本通》焕新上线!

    写在前面 作为连续五年入选 全国高校大学生竞赛榜 的比赛 外研社 国才杯 理解当代中国 全国大学生外语能力大赛 含金量可想而知 对于想要保研的计算机er来说 能够在这样 规模大 影响力高 的比赛中 取得一定的成绩 必定会拉开自己与他人的差距
  • Java_Mybatis_动态SQL

    一 动态SQL 1 概述 动态SQL 是 MyBatis 的强大特性之一 解决拼接动态SQL时候的难题 提高开发效率 分类 if choose when otherwise trim where set foreach 2 if 做 whe
  • Java_原生api分页

    Java分页 当 mybatis plus 分页插件无法使用时 就可以使用 Java 中的 api 进行分页 本次使用的是通过stream流的方法进行分页 List
  • 参数扫描文件的用法

    摘要 通过控制和改变所选参数有助于检查给定光学系统的性能 VirtualLab Fusion提供了完全灵活且计算效率高 通过并行化 的参数运行 使用户可以指定不同的参数变化方式 作为示例 它可以用于所研究的任何系统参数的公差分析 分析结果可
  • Linux_vi/vim编辑器

    3 VI 与 VIM 3 1概述 vi编辑器 是Linux和Unix上最基本的文本编辑器 工作在字符模式下 由于不需要图形界面 vi是效率很高的文本编辑器 vim是 vi的增强版 比vi更容易使用 vi的命令几乎全部都可以在vim上使用 3
  • 好书推荐《VirtualLab Fusion入门与进阶实用教程(第二版)》

    目 录 第一章 VirtualLab Fusion理论基础 1 1 1 几何光学和光线追迹 1 1 2 物理光学和光场追迹 1 1 2 1 统一场追迹 3 1 2 2 第二代场追迹 6 第二章 VirtualLab Fusion安装与更新
  • Java_mybatis-结果集映射-ResultType&ResultMap

    Mybatis返回值接收 可以使用两种方式进行参数的接收 resultType resultMap 这两种分别都是需要在Mapper xml文件中去设置的 当结果是一个简单的对象或者 list 或者 map 对象中没有嵌套对象 或者集合时
  • vue_table导出excel

    vue直接导出对应table const exportClick gt const wb XLSX utils table to book document querySelector newTables 关联dom节点 get binar
  • vue_域名部署无法访问后端

    前言 目前部署的比较另类 因为服务器为 windows 目前还不是很会 nginx 所以现在就只能在服务器上安装 nodejs 然后直接使用 npm run dev 命令行的方式运行项目 遇到的坑 使用ip访问前端的时候 就可以访问 但是通
  • 题解 | #密码合格# 把条件三“包含公共元素”去掉就好理解

    题解 E Easy problem E Easy problem刚刚随便交了一发过了 来讲下自己的做法 一眼没构出来 但是考虑到1e18的数有18位数 显然rand足够多次 大概率是可以得到 题解 考试分数 四 select job a d
  • 西瓜视频RenderThread引起的闪退问题攻坚历程

    背景 影响 西瓜之前存在过一类RenderThread闪退 从堆栈上看 全部都是系统so调用 给人的第一印象像是一个系统bug 无从下手 闪退集中在Android 5 6上 表现为打开直播间立即闪退 该问题在2022年占据Native Cr
  • 全球化需要先搬离中国?中国公司出海不应失去“模式自信”

    题解 取近似值 include
  • 华为od求捞

    字节 虾皮 算法面试 虾皮 算法工程师 一面面经 虾皮北京提前批 算法工程师 回暖分析 战绩结算 on 赛文X 爱奇艺 华为od求捞 情况 12月机考289 没有约到面试 普通本科 自考了河北大学计算机本科 有四年的软件开发工作经验 这种情
  • Java实现双链表的反转

    风控模型实习生招聘 度小满 上海 腾讯ssp后再次加面 Java实现双链表的反转 public static class DoubleNode public int value public 华为武研所有开奖的吗 ict 公共开发部的 Ja
  • 配置文件中的$和@

    配置文件中的 和 0 前言 借鉴文章 https blog csdn net Saintmm article details 124603343 https blog csdn net ster ben article details 11