SpringBoot的配置文件——.yml和.properties

目录

1. Spring Boot 配置文件的使用场景

2. 配置文件的两种格式

2.0 特殊说明:

2.1 .properties 

2.1.1 格式 

2.2.2 缺陷 

2.2.3 解决中文乱码的问题

2.2  .yml

2.2.3 格式

配置数据库连接

注意转义字符

​编辑 ​编辑

配置null

配置对象

 从.yml读取文件举例

Student类及注意事项

appliaction.yml

Test

 配置集合示例

 创建不同环境下的配置文件


1. Spring Boot 配置文件的使用场景

1.系统配置文件:配置文件通常用于指定应用程序的全局设置,比如数据库连接、日志级别、端口号等。可以在配置文件中定义这些属性,并根据需要进行修改。

2.用户配置文件:通过使用Spring Boot的配置文件,可以让用户在运行时指定他们希望覆盖的属性。例如,应用程序可能具有一些默认设置,但允许用户在配置文件中指定其他值

2. 配置文件的两种格式

.properties和.yml 

2.0 特殊说明:

1. 当.properties中设置端口号server.port=8888,而在.yml中设置

server:

    port:6666,这个时候会以8888端口号!当一个项目中存在两种格式的配置文件,并且两个配置文件中设置了相同配置项,properties的优先级会更高

2. 理论上这两种配置文件是可以共存的,但实际上我们会统一

3. properties第一次用的话使用中文会乱码,但.yml不会,但是也可以通过别的方法来改变properties中文乱码的问题,下文中有介绍

4.yml的通用性更好

2.1 .properties 

2.1.1 格式 

#表示注释;key=value的形式
server.port=8888
mytest=zhangsan
#连接数据库配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456

2.2.2 缺陷 

mytest=张三,像这种使用中文会乱码,但是你也可以通过改成utf8的形式改变这个问题。

2.2.3 解决中文乱码的问题

  1. @PropertySource
    @PropertySource(value="application.properties",encoding="utf-8")

     但是这种方式必须保证在application.properties , 中有

  2. @Value(value = "${my.value}", encoding = "utf-8")
    private String myValue;
    

2.2  .yml

2.2.3 格式

server:
  port: 6666
#自定义配置类
mytest2: lisi

这个必须值的前面有空格,这里的mytets2= 张三,写成中文也不会乱码。

配置数据库连接

# 配置数据库连接
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8
    username: root
    password: 123456 

对比一下:

注意转义字符

 

配置null

# Null,~表示null,下行表示null是key,而value是一个特殊的值
null.value: ~

配置对象

student:
  id: 1
  name: java
  age: 18
# 或者就使用行内写法
student2: {id: 1,name: java,age: 18}

 

 从.yml读取文件举例
Student类及注意事项


import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties("student")//将配置文件的属性值与一个特定的Java类库绑定起来
@Data
//使用lombok的@Data注解,里面就是我们想要的get,set,toString等方法
public class Student {
    private int id;
    private String name;
    private int age;
}

注意事项 :

  •  Student类上方有@ConfigurationProperties("student")注解,并且里面写的必须与application.yml中的自定义配置对象名字一样
  • 实体类属性名要与配置中的key保持一致,并且提供settet和getter;则会就可以使用lombok中的@Data注解

@Configuration注解就是把配置文件中的某个属性值与某个特定的Java类绑定起来。

appliaction.yml

# 配置对象
student:
  id: 1
  name: java
  age: 18
# 或者就使用行内写法
student2: {id: 1,name: java,age: 18}
Test

最后的打印结果

 配置集合示例

在 YAML 配置文件中,可以使用列表来定义一组值。


students:
  - id: 1
    name: Alice
    age: 18
  - id: 2
    name: Bob
    age: 20
  - id: 3
    name: Charlie
    age: 22

在上面的配置中,我们定义了一个名为 `students` 的列表,其中包含了三个学生的信息,每个学生的信息又用一个 map 来表示。

在 Spring Boot 中,可以通过 `@ConfigurationProperties` 注解来将 YAML 配置文件中的值注入到 Java 对象中。例如,我们可以创建一个 `Student` 类来表示一个学生的信息:

@Data
public class Student {
    private int id;
    private String name;
    private int age;
}

然后,在 Spring Boot 应用程序中,可以使用以下方式将 `students` 列表中的所有元素注入到一个 `List<Student>` 对象中:


@Component
@ConfigurationProperties("students")
@Data
public class StudentConfig {
    private List<Student> students;
}

在上面的代码中,我们使用 `@Component` 和 `@ConfigurationProperties` 注解将 `StudentConfig` 类声明为一个 Spring Bean,并将其与 YAML 配置文件中以 `students` 为前缀的配置项绑定起来。Spring Boot 会自动将 `students` 列表中的所有元素映射为 `List<Student>` 对象的属性值。

现在,我们可以在其他组件中注入 `StudentConfig` 对象,并使用其中的 `students` 属性来获取所有学生的信息了。例如:

```java
@Service
public class StudentService {
    private final StudentConfig studentConfig;

    @Autowired
    public StudentService(StudentConfig studentConfig) {
        this.studentConfig = studentConfig;
    }

    public List<Student> getAllStudents() {
        return studentConfig.getStudents();
    }
}
```

在上面的代码中,我们注入了 `StudentConfig` 对象,并在 `getAllStudents()` 方法中返回了其中的 `students` 属性。

这样,我们就可以轻松地将 YAML 配置文件中的列表注入到 Java 对象中,并在 Spring Boot 应用程序的其他组件中使用了。

 创建不同环境下的配置文件

dev开发环境中可以设置端口号:1111

prod中可以设置成别的端口号:2222

在application.yml中可以去选择使用哪一种环境

spring:
  profiles:
    active: dev

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
根据引用的信息,application.properties文件可以转换为yml格式的配置文件。关于如何将application.properties转换为yml格式的软件,我没有找到相关的具体软件。但是可以通过手动将属性从.properties文件复制到.yml文件中来进行转换。在yml文件中,属性的格式与properties文件有所不同,需要使用冒号(:)和缩进来表示属性的层次结构。可以使用文本编辑器或专门的yml编辑器来进行转换。转换的过程可能需要一些手动的工作和调整,以确保语法正确和属性的层次结构正确。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [SpringBoot——聊聊application.properties和application.yml的写法规范及区别](https://blog.csdn.net/weixin_43823808/article/details/120669167)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [application.yml代替application.properties](https://blog.csdn.net/weixin_43704734/article/details/122111927)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sqyaa.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值