SpringBoot读取.yml配置文件最常见的两种方式

SpringBoot读取.yml配置文件最常见的两种方式一 前言我们在开发中会经常遇到一些可能会变的值 比如数据库的密码 一些关键链接的配置等等 都需要我们写在配置文件中 这样可以把这些配置文件放到 nacos 上进行管理 修改 nacos 的配置 咱们发布的包就可以动态的进行更新了 不需要重新修改打包

欢迎大家来到IT世界,在知识的湖畔探索吧!

一、前言

我们在开发中会经常遇到一些可能会变的值,比如数据库的密码,一些关键链接的配置等等。

都需要我们写在配置文件中,这样可以把这些配置文件放到nacos上进行管理,修改nacos的配置,咱们发布的包就可以动态的进行更新了,不需要重新修改打包在重新发包!

咱们今天就来说一说读取配置文件中的值常见的两种方法,刚刚说的动态更新配置的是第二种配置哈! @Value(“${school.teacher}”) 不会动态更新,所以小编推荐使用第二种方式 @ConfigurationProperties(prefix = “school”) 进行读取配置文件!下面小编 也会带大家一起演示一下不需要重启项目就可以动态的更新,在生产上非常的好用!!!

二、第一种方式

第一种方式比较场景,也是最简单的,就是 @Value($(配置文件中的参数))

我们首先在application.yml文件中写一个配置:

school: teacher: 王老师 student: 小明

欢迎大家来到IT世界,在知识的湖畔探索吧!

==这里key的冒号后面一定要有个空格==,字符串不需要加双引号!

我们为了方便直接在controller进行演示了!!

欢迎大家来到IT世界,在知识的湖畔探索吧!@RestController @RequestMapping("/test") @Slf4j @RequiredArgsConstructor public class TestController { @Value("${school.teacher}") private String teacher; @Value("${school.student}") private String student; @GetMapping("/testValue") public Result testValue(){ return Result.success(teacher + "--->" + student); } }

我们debug看一下是否可以读取到配置中的值!

SpringBoot读取.yml配置文件最常见的两种方式

欢迎大家来到IT世界,在知识的湖畔探索吧!

我们可以看到是有值的!

三、第二种方式(推荐)

这种方式是小编比较推荐的,虽然看似比 @Value 麻烦不少,但是更加的规范,在配合nacos的时候也可以动态的修改,会立即生效,一会小编带大家试一下哈!!为什么推荐这种方式呢,是因为spring他们都是使用这种方式进行配置的,所以跟着官方走不会有错的!!

1. 修改yml文件

我们刚刚修改了一下yml配置文件,让类型更加丰富!!

school: teacher: 王老师 studentList: - 小明 - 小刚

2. 编写读取映射的类

欢迎大家来到IT世界,在知识的湖畔探索吧!import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.List; / * @author wangzhenjun * @date 2022/8/17 9:04 */ // 要交给spring容器,不然获取不到值 @Component // 配置读取yml文件中前缀以 school开头的配置可以全部读取 @ConfigurationProperties(prefix = "school") // 要有get方法,不然无法获取值 @Data public class School { // 名称要与yml一致 private String teacher; private List 
   
     studentList; } 
   

3. 在Controller进行测试

@RestController @RequestMapping("/test") @Slf4j @RequiredArgsConstructor public class TestController { @Autowired private School school; @GetMapping("/testProperties") public void testProperties(){ log.info("读取yml的school对象:{}",school); } }

4. debug进行看一下

SpringBoot读取.yml配置文件最常见的两种方式

5. 为什么推荐第二种方式

我们找到yml文件,按住 Ctrl 鼠标点击 port ,进去看一下spring官方是怎么配置的!

SpringBoot读取.yml配置文件最常见的两种方式

我们来到 ServerProperties 这个配置类上看到:

欢迎大家来到IT世界,在知识的湖畔探索吧!public void setPort(Integer port) { this.port = port; }

我们发现port是一个成员变量,我们直接看一下这个类吧!

@ConfigurationProperties(prefix = "server", ignoreUnknownFields = true) public class ServerProperties { / * Server HTTP port. */ private Integer port; }

我们看到spring也是使用第二种方式进行读取yml的内容的!!

四、验证第二种方式实时更新

nacos这里小编就不带大家整合到项目中了,小编直接演示效果哈!

1. nacos上配置yml

欢迎大家来到IT世界,在知识的湖畔探索吧!school: teacher: 王老师 studentList: - 小明 - 小刚
SpringBoot读取.yml配置文件最常见的两种方式

==读取的配置和第二种方式那个 School 一样!==

2. Controller获取

@RestController @RequiredArgsConstructor @RequestMapping("/zone") public class ZoneController { @Autowired private School school; @GetMapping("/test") public R test() { return R.ok(school); }

3. postman测试

SpringBoot读取.yml配置文件最常见的两种方式

4. 修改配置

我们修改配置不重启项目

SpringBoot读取.yml配置文件最常见的两种方式

在次测试:

SpringBoot读取.yml配置文件最常见的两种方式

五、总结

第二种方式: @ConfigurationProperties 是非常推荐大家使用的,能够规范和生产环境中动态生效,项目中的 @Value() 去修改修改吧!如果不需要动态更新的,看个人情况修改


免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/79626.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信