properties文件和yaml文件的区别~

简介: properties文件和yaml文件的区别~

之前,关于数据库的连接信息,端口号的设置等,我们会将它分门别类的写在多个文件中,但SpringBoot,它讲究统一的配置管理,我们想设置的任何参数都集中在一个固定位置和命名的配置文件,而该配置文件应该放置在Spring Boot工程的src/main/resources目录下,这是因为src/main/resources目录是Spring Boot默认的类路径,配置文件会被自动加载并可供用应用程序访问,且命名必须为application后缀为.properties/.yaml/.yml,原因如下所示:


在父依赖中已经规定好了该配置文件的后缀!

第一种以.properties为后缀的配置文件:

该文件是key:value的形式,由于该配置文件是springboot为所有框架提供配置信息的地方,为了不引起key重复,由此选择多层命名的方式,但是这种格式书写起来特别麻烦,因此我们不推荐这种格式

server.port=80
server.servlet.context-path=/boot

第二种以.yaml或者yml为后缀的配置文件:

如下所示,它是有层次结构的数据序列化格式,可读性比较好

server:
  port: 80
  servlet:
    context-path:/boot

无论是.properties还是.yaml/.yml都有各自的优势,这完全取决于实际需求,简单的配置我们可以使用.properties,而复杂的配置我们可以通过选择YAML获得更多的灵活性和可读性

yaml语法:

数据结构用树形结构呈现,通过缩进来表示层级(回车即可实现)

连续的项目(集合)通过减号"-“来表示

键值结构里面的key/value对用冒号”:"来分隔 YAML配置(注意值和冒号之间有空格!!!)

文件的扩展名是yaml或yml

场景应用:通过配置文件对实体类中的信息进行配置,并将其输出至浏览器

第一步:创建组件—User

package com.springboot.Bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
@Data
@NoArgsConstructor
@AllArgsConstructor
@ConfigurationProperties(prefix = "user1")
public class User {
    private String name;
    private String password;
}

第二步:创建配置类—将User注册为组件

package com.springboot.MyConfigs;
import com.springboot.Bean.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration(proxyBeanMethods = false)
public class MyConfig {
    @Bean
    public User user1(){
        return new User();
    }
}

第三步:在application.yaml文件中,对User中的属性赋值

user1:
  name: 易烊千玺
  password: 112899
server:
  port: 8088

第四步:创建控制器

package com.springboot.Controller;
import com.springboot.Bean.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
    @Autowired
    User user;
    @RequestMapping("user")
    public User showMessage(){
        return user;
    }
}

启动项目:

但是有一个问题,即为我们在.yaml文件中添加我们自定义组件的配置信息时,它相当于一个记事本,没有任何的提示信息,对此,springboot为我们提供了一个依赖,如下所示:

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
</dependency>

它的作用即为在我们对自定义的组件进行配置的时候,它会提示我们有哪些属性,效果如下所示:

相关文章
|
4月前
|
JSON Kubernetes API
深入理解Kubernetes配置:编写高效的YAML文件
深入理解Kubernetes配置:编写高效的YAML文件
|
3月前
|
Kubernetes 应用服务中间件 nginx
k8s学习--YAML资源清单文件托管服务nginx
k8s学习--YAML资源清单文件托管服务nginx
k8s学习--YAML资源清单文件托管服务nginx
|
3月前
|
Kubernetes Docker Perl
k8s常见故障--yaml文件检查没有问题 pod起不来(一直处于创建中)
k8s常见故障--yaml文件检查没有问题 pod起不来(一直处于创建中)
140 1
|
3月前
ingress相关yaml文件报错且相关资源一切正常解决方法
ingress相关yaml文件报错且相关资源一切正常解决方法
ingress相关yaml文件报错且相关资源一切正常解决方法
|
6月前
|
运维 Kubernetes Serverless
Serverless 应用引擎使用问题之s.yaml文件中如何使用外部环境变量
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
6月前
|
存储 缓存 运维
函数计算产品使用问题之如何将外部环境变量放到s.yaml文件中使用
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
5月前
|
机器学习/深度学习 计算机视觉 Python
深度学习项目中在yaml文件中定义配置,以及使用的python的PyYAML库包读取解析yaml配置文件
深度学习项目中在yaml文件中定义配置,以及使用的python的PyYAML库包读取解析yaml配置文件
203 0
|
5月前
|
JSON Kubernetes 数据格式
k8s集群yaml文件方式迁移
k8s集群yaml文件方式迁移
|
5月前
|
Kubernetes API 容器
在K8S中,deployment的yaml文件如何编写呢?
在K8S中,deployment的yaml文件如何编写呢?
|
5月前
|
Dart iOS开发 C++
Dart ffi 使用问题之在pubspec.yaml文件中,对plugin_ffi_sample插件的依赖如何配置
Dart ffi 使用问题之在pubspec.yaml文件中,对plugin_ffi_sample插件的依赖如何配置