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

yizhihongxing

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日

相关文章

  • 关于a href传参的中文乱码问题

    关于 a href 传参的中文乱码问题,要解决这个问题,我们需要进行以下几个步骤: 问题分析 当我们使用 a 标签传递中文参数时,浏览器会将中文进行URL编码, 例如: <a href="test.php?name=张三&age=18">点击访问</a> 该链接实际传递的参数是 name=%E5%BC%A0…

    html 2023年5月31日
    00
  • HTML5如何使用SVG的方法示例

    HTML5可以使用SVG格式的图片和图形进行网页设计,SVG是一种基于XML语法的矢量图形格式,具有无限的缩放能力和清晰度。本文将介绍HTML5使用SVG的方法,以及两个示例说明。 1. 在HTML中使用SVG的方法 使用SVG需要两个步骤: 第一步:在HTML中定义SVG元素 SVG元素是HTML中的一个标签,可以通过以下代码定义SVG元素: <sv…

    html 2023年5月30日
    00
  • C++ TinyXML解析案例详解

    C++ TinyXML解析案例详解 简介 TinyXML是一个轻量级的XML解析库,适用于嵌入式设备以及桌面应用程序开发。在本篇文章中,我们将详细讲解如何使用C++ TinyXML库进行XML解析。同时,本文还将提供2个示例说明,帮助你更好地理解TinyXML的使用。 准备工作 在开始讲解之前,我们需要先进行准备工作: 下载并安装TinyXML库。可以从官方…

    html 2023年5月30日
    00
  • 基于Java创建XML(无中文乱码)过程解析

    下面为你详细讲解Java创建XML的完整攻略。 一、引入相关依赖 使用Java创建XML文件需要使用到JDK提供的Java API,没有额外的第三方依赖库。需要在Java项目中引入以下包: <!–用于创建和操作XML文档–> <dependency> <groupId>org.jdom</groupId> …

    html 2023年5月30日
    00
  • web服务器程序运行出现乱码问题的解决方法

    web 服务器程序运行出现乱码问题通常是因为客户端(浏览器)与服务器之间采用的编码方式不同,造成数据的传输解码错误。下面是一些解决乱码问题的方法: 1. 设置 HTTP 头信息 可以在返回给客户端的 HTTP 响应头中设置编码类型,通知浏览器使用正确的字符编码解析内容。设置HTTP头信息的方式如下: Content-Type: text/html; char…

    html 2023年5月31日
    00
  • Mybatis多表查询与动态SQL特性详解

    Mybatis多表查询与动态SQL特性详解 介绍 Mybatis是一款使用Java编写的持久层框架,它可以帮助程序员将Java对象和数据库表之间传输数据映射成为一种简单的配置,同时还支持很多高级特性,例如动态SQL语句和多表查询。 在本篇文章中,我们将会详细讲解Mybatis多表查询与动态SQL特性的使用方法,帮助Mybatis初学者更好地理解和掌握该框架。…

    html 2023年5月30日
    00
  • iPhone11字体大小怎么调?苹果手机调节字体大小的三种方法

    iPhone11是苹果公司推出的一款智能手机,用户可以通过多种方式调节字体大小,以适应不同的使用场景和需求。下面是iPhone11调节字体大小的三种方法: 方法1:使用系统设置 打开iPhone11的“设置”应用程序。 点击“显示与亮度”选项。 在“文本大小”选项下,使用滑块调节字体大小。 您可以通过预览文本框中的文本,调整字体大小,直到满意为止。 以下是一…

    html 2023年5月17日
    00
  • Win10怎么去除桌面快捷方式图标左下角的小箭头

    以下是Win10去除桌面快捷方式图标左下角小箭头的攻略: 使用“Ultimate Windows Tweaker”工具:您可以使用“Ultimate Windows Tweaker”工具来去除桌面快捷方式图标左下角的小箭头。该工具是一款免费的第三方工具,可以帮助您优化和定制Windows 10系统。在该工具中,您可以找到“桌面”选项卡,然后选择“去除快捷方式…

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