在yaml中给属性赋值的几种方式

目录

1.配置文件有两种  .properties  或者  .yaml 

2.重点“yaml具体语法”介绍

3.yaml语法使用示例

yaml基本语法

4.强大之处在于使用yaml可以直接给实体类赋值

4.1可以使用@Value("XXXX")来   单个赋值。在测试类中打印出来。

4.2.1  通过注解@ConfigurationProperties(prefix = "person") 绑定yaml中的参数给实体类赋值。(必须是使用了@Component( 组件)再用这个功能)

 4.2.2  properties配置文件在写中文时会乱码。另外,当存在两个自定义的properties文件时,系统会默认遵从application.properties优先,即使你已经使用@PropertySource(value = "classpath:shiluying.properties")指定了配置文件,也不起作用。

4.3    给实体类  加载   “指定配置文件”  ,

@PropertySource(value = "classpath:XXXXX.properties")    属性资源

然后使用Spring的EL表达式取出配置文件的值。

@Value("${name}")

private String name;

 5.yaml可以使用一些特殊语法,yaml除了可封装实体类,还支持占位符 ${  }

6.  yaml中支持复杂类型的封装,支持JSR303数据校验,支持松散语法。

7.  多环境配置:


根据【狂神说Java】SpringBoot最新教程IDEA版通俗易懂_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV1PE411i7CV?p=8   学习之后的知识点总结:

1.配置文件有两种  .properties  或者  .yaml 

SpringBoot的全局配置文件文件名是固定的,可以使用  application.properties  或者application.yaml   。可以同时存在两个配置文件。在配置文件中我们可以修改SpringBoot自动配置的默认值。

官方也建议使用yaml文件。

存在两种自定义的properties文件时,系统会默认遵从application.properties优先,即使你已经使用

@PropertySource(value = "classpath:shiluying.properties")

指定了配置文件,也不起作用。

2.重点“yaml具体语法”介绍

参看:YAML 入门教程 | 菜鸟教程 https://www.runoob.com/w3cnote/yaml-intro.html

3.yaml语法使用示例

yaml基本语法

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进不允许使用tab,只允许空格
  • 缩进的空格数不重要,只要相同层级的元素左对齐即可
  • '#'表示注释

而properties 只能保存键值对。

4.强大之处在于使用yaml可以直接给实体类赋值

在pojo包下创建实体类,设置属性、有参和无参构造器、getter和setter方法、toString方法。

为了让这个实体类能被扫描到,要加上@Component( 组件),把实体类添加到SpringBoot组件中。

例如:

@Component
public class Person {...  }

然后,

4.1可以使用@Value("XXXX")来   单个赋值。在测试类中打印出来。

4.2.1  通过注解@ConfigurationProperties(prefix = "person") 绑定yaml中的参数给实体类赋值。(必须是使用了@Component( 组件)再用这个功能)

 不配置依赖就会提示报红。

 但是,不配置不会影响程序的运行。

把加了@ConfigurationProperties(prefix = "person") 注解的实体类和yaml中的参数person绑定起来。(ConfigurationProperties配置属性,prefix 前缀,称谓)

 再通过测试类输出就可以看到结果。

4.2.1.1  在Spring官网上也能找到这个spring-boot-configuration-processor依赖。

 <!--配置注解处理器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

在官网上进入Spring Boot 然后找到LEARN-》找一个版本点击Reference Doc.如下:

 会看到下面的部分,“配置元数据: 元数据被用于描述配置属性。”点进去就能找到了。

 

配置注释处理器,

要使用处理器,请包含对spring-boot-configuration-processor.

对于 Maven,依赖项应声明为可选,如下例所示:

 4.2.2  properties配置文件在写中文时会乱码。另外,当存在两个自定义的properties文件时,系统会默认遵从application.properties优先,即使你已经使用@PropertySource(value = "classpath:shiluying.properties")指定了配置文件,也不起作用。

4.3    给实体类  加载   “指定配置文件”  ,

@PropertySource(value = "classpath:XXXXX.properties")    属性资源

然后使用Spring的EL表达式取出配置文件的值。

@Value("${name}")

private String name;

例如:

@PropertySource(value = "classpath:shiluying.properties")
   
@Value("${name}")

 

 

 5.yaml可以使用一些特殊语法,yaml除了可封装实体类,还支持占位符 ${  }

6.  yaml中支持复杂类型的封装,支持JSR303数据校验,支持松散语法。

 使用JSR303数据校验,需要@Validated 和 默认的校验,还需要导入依赖。

不导入依赖,不能使用像@Email这样默认的校验注解。

@Validated //数据校验
public class Person {

    @Email(message = "需要输入邮箱地址")
    private String name;
<!--配置JSR303校验的依赖包  @Validated //数据校验  -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

 更加深入的使用JSR303校验请参考:

Java数据校验:JSR-303_xueguchen的博客-CSDN博客_java jsr303 https://blog.csdn.net/xueguchen/article/details/111406671

7.  多环境配置:

#多环境配置文件的选择,可以选择需要激活哪一个
server:
  port: 8081
spring:
  profiles:
    active: dev
---  # 分割
server:
  port: 8082
spring:
  profiles: dev
---
server:
  port: 8083
spring:
  profiles: test

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 Go ,你可以使用第三方库来读取 YAML 文件的指定属性值。一个常用的库是 `github.com/go-yaml/yaml`。 以下是一个示例代码,演示如何读取 YAML 文件的指定属性值: ```go package main import ( "fmt" "io/ioutil" "log" "github.com/go-yaml/yaml" ) type Config struct { Database struct { Host string `yaml:"host"` Port int `yaml:"port"` Username string `yaml:"username"` Password string `yaml:"password"` Database string `yaml:"database"` } `yaml:"database"` } func main() { // 读取 YAML 文件内容 data, err := ioutil.ReadFile("config.yaml") if err != nil { log.Fatal(err) } // 解析 YAML 内容到结构体 var config Config if err := yaml.Unmarshal(data, &config); err != nil { log.Fatal(err) } // 读取指定属性值 fmt.Println("Database Host:", config.Database.Host) fmt.Println("Database Port:", config.Database.Port) fmt.Println("Database Username:", config.Database.Username) fmt.Println("Database Password:", config.Database.Password) fmt.Println("Database Name:", config.Database.Database) } ``` 在上面的代码,我们定义了一个 `Config` 结构体,该结构体的字段与 YAML 文件属性对应。使用 `yaml` 标签来指定 YAML 键名。 在 `main` 函数,我们读取了名为 `config.yaml` 的 YAML 文件,并将其解析为 `Config` 结构体。然后,我们可以通过结构体的字段来访问指定的属性值。 确保在运行代码之前,先在当前目录下创建一个名为 `config.yaml` 的 YAML 文件,并填写正确的属性值。 通过这种方式,你可以读取 YAML 文件的指定属性值,并在代码使用它们。根据实际需要,你可以修改 `Config` 结构体的字段来匹配 YAML 文件属性结构。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值