springboot配置文件属性变量引用方式${}和@@用法及区别说明

Spring Boot 的配置文件可以通过 ${} 或 @@ 语法引用属性变量。这两种语法虽然看起来非常相似,但实际上有一些区别。

使用 ${} 引用属性变量

语法说明

${} 语法用于引用配置文件中的属性变量。在配置文件中可以定义一个属性,然后在其他地方通过 ${} 语法来引用该属性。语法格式如下:

${属性键名:默认值}

其中,属性键名是属性的名称,可以使用 . 分隔符来表示嵌套的属性。默认值是在找不到指定属性时使用的值。如果省略默认值,那么默认值为 null。

示例说明

假设定义了一个名为 com.example.log.name 的属性,在 application.yml 配置文件中可以这样使用:

server:
    port: ${PORT:8080}

com:
  example:
    log:
      name: mylogger

在这个例子中,我们引用了一个名为 PORT 的属性,如果该属性没有定义,那么默认值就是 8080。另外,我们定义了一个名为 com.example.log.name 的属性,它的值是 mylogger

特殊用法

还有一种特殊的用法,可以通过 ${random} 语法来生成随机数。如下所示:

myapp:
  password: ${random.value}

在这个例子中,属性 myapp.password 将会被设置为一个随机的字符串。

使用 @@ 引用属性变量

语法说明

@@ 语法用于引用环境变量或系统属性。环境变量和系统属性都是可以在系统中动态设置的值,因此可以在 Spring Boot 应用程序中方便地引用和使用。

@@ 语法的语法格式如下:

@@{属性名称:默认值}

其中,属性名称用于指定要引用的环境变量名称或系统属性名称。如果找不到指定的值,则使用默认值。如果省略默认值,则使用 null。

示例说明

假设我们在操作系统中设置了一个环境变量 MYAPP_SECRET,它的值是 123456。在 application.yml 配置文件中可以这样使用 @@语法:

myapp:
    secret: @@{MYAPP_SECRET:default}

现在,属性 myapp.secret 的值将会被设置为 123456。如果环境变量 MYAPP_SECRET 没有设置,那么值将会是 default

区别说明

在使用 ${} 语法时,属性值可以在配置文件中定义,它只能引用 Spring Boot 配置文件中的属性变量,而无法引用系统环境变量或系统属性。使用 @@ 语法时,它可以引用系统环境变量和系统属性,但它不能直接引用配置文件中的属性变量。

因此,在实际使用中,我们需要根据具体情况选择适当的语法来引用属性变量。

例如,如果要使用系统环境变量和系统属性,那么应该使用 @@ 语法,如果要使用配置文件中的属性变量,那么应该使用 ${} 语法。

另外,有时候为了方便操作,也可以将系统环境变量或系统属性的值设置成配置文件中的属性值,这样就可以通过 ${} 语法来引用它们了。

例如,我们可以设置一个系统属性 myapp.secret,它的值是 ${secret},其中 secret 是在应用程序的配置文件中定义的。然后,在应用程序中可以使用 ${} 语法来引用这个系统属性,就可以达到引用配置文件中的属性变量的效果了。

示例代码如下:

java -Dmyapp.secret=${secret} -jar myapp.jar
myapp:
    secret: mysecret

在这个例子中,我们将系统属性 myapp.secret 设置为 ${secret},其中 secret 是在配置文件中定义的。然后,我们在配置文件中引用 myapp.secret 属性,实现了从配置文件中引用属性的目的。

总之,${} 和 @@ 语法都是用于引用属性变量的语法,我们需要根据策略选择适当的语法来使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot配置文件属性变量引用方式${}和@@用法及区别说明 - Python技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • 比特币是风险资产还是避险资产一文了解

    以下是“比特币是风险资产还是避险资产一文了解”的完整攻略: 比特币是风险资产还是避险资产一文了解 比特币是一种数字货币,它的价格波动非常大,因此有人认为它是一种风险资产。但是,也有人认为比特币是一种避险资产,可以用来对冲通货膨胀和政治不稳定等风险。以下是关于比特币是风险资产还是避险资产的详细攻略。 比特币是风险资产 有人认为比特币是一种风险资产,因为它的价格…

    html 2023年5月18日
    00
  • HTML中data自定义属性的使用和插件应用介绍

    HTML中的data属性是一种自定义属性,通常用于存储与元素相关的自定义数据。这些数据可以在JavaScript中轻松地获取和操作。本文将介绍数据自定义属性的用法以及如何在插件中应用它们。 HTML中data自定义属性的使用 HTML中的data属性是一系列自定义属性,它们的名称以“data-”为前缀。语法格式如下: <div data-<cus…

    html 2023年5月30日
    00
  • SQL Server中的XML数据类型详解

    下面我将详细讲解“SQL Server中的XML数据类型详解”的完整攻略。 一、XML数据类型概述 在SQL Server中,XML数据类型是一种可用于存储XML文档的数据类型。XML是可扩展标记语言,是一种用于描述、传输、存储数据的标准格式。在SQL Server中,可以使用XML数据类型存储XML数据,这使得我们可以方便地查询和处理XML数据。 二、XM…

    html 2023年5月30日
    00
  • mysql数据库中字符集乱码问题原因及解决

    MySQL 数据库中字符集乱码问题是一个常见的问题,其原因主要是由于使用了不同的字符集或者在传输过程中被截断导致的。下面将详细介绍如何解决 MySQL 数据库中字符集乱码的问题。 原因 MySQL 数据库中字符集乱码问题的主要原因是由于客户端与服务器端的字符集不一致导致的,在这种情况下,当数据从客户端传输到服务器端时,可能会发生乱码。 另外,如果插入的文本数…

    html 2023年5月31日
    00
  • 如何制作U盘启动安装Win8系统

    以下是制作U盘启动安装Win8系统的完整攻略: 下载Win8系统镜像文件:首先,您需要从官方网站或其他可靠的来源下载Win8系统镜像文件。请确保您下载的镜像文件与您的计算机硬件兼容。 准备U盘:接下来,您需要准备一个容量大于4GB的U盘,并将其格式化为FAT32文件系统。请注意,此操作将会清除U盘中的所有数据,请确保您已经备份了重要的数据。 使用Rufus制…

    html 2023年5月17日
    00
  • Node.js抓取网站中文乱码解决办法

    Node.js 抓取网站中文乱码解决的办法包括以下几个步骤: 设置响应的头部字符编码 对获取到的数据进行字符编码转换 下面我们来一步步说明这些步骤。 1. 设置响应的头部字符编码 首先,在使用 Node.js 进行抓取网站数据时,需要设置响应的头部字符编码为 UTF-8。在 Node.js 中可以使用 setHeader() 方法来设置响应头部信息。示例代码…

    html 2023年5月31日
    00
  • XSL简明教程

    XSL简明教程完整攻略 什么是XSL? XSL是“可扩展样式表语言”(Extensible Stylesheet Language)的缩写。它是一种基于XML的语言,用于定义如何从XML文档中提取数据并以满足特定需求的方式渲染输出。 XSL语言由三个部分组成:* XSLT(XSL Transformations):定义用于转换XML文档的规则。* XPath…

    html 2023年5月30日
    00
  • JSP中EL表达式的用法详解(必看篇)

    让我来给大家详细讲解一下“JSP中EL表达式的用法详解(必看篇)”。 什么是EL表达式 EL表达式(Expression Language)是JSP中的一种表达式语言,它的作用是简化JSP页面上的Java代码,使JSP页面更具可读性、简洁性和灵活性。 EL表达式的语法 变量表达式 EL表达式中的第一种语法是变量表达式,它的格式为${变量名}。 <h1&…

    html 2023年5月30日
    00
合作推广
合作推广
分享本页
返回顶部