读取配置数据

使用 @Value注解

使用 @Value("表达式") 注解可以从配合文件中读取数据,注解中用于读取属性名引用方式是:${一级属性名.二级属性名……}

我们可以在 BookController 中使用 @Value 注解读取配合文件数据,如下

@RestController
@RequestMapping("/books")
public class BookController {@Value("${lesson}")private String lesson;@Value("${server.port}")private Integer port;@Value("${enterprise.subject[0]}")private String subject_00;@GetMapping("/{id}")public String getById(@PathVariable Integer id){System.out.println(lesson);System.out.println(port);System.out.println(subject_00);return "hello , spring boot!";}
}
Environment对象

上面方式读取到的数据特别零散,SpringBoot 还可以使用 @Autowired 注解注入 Environment 对象的方式读取数据。这种方式 SpringBoot 会将配置文件中所有的数据封装到 Environment 对象中,如果需要使用哪个数据只需要通过调用 Environment 对象的 getProperty(String name) 方法获取。具体代码如下:

@RestController
@RequestMapping("/books")
public class BookController {@Autowiredprivate Environment env;@GetMapping("/{id}")public String getById(@PathVariable Integer id){System.out.println(env.getProperty("lesson"));System.out.println(env.getProperty("enterprise.name"));System.out.println(env.getProperty("enterprise.subject[0]"));return "hello , spring boot!";}
}

注意:这种方式,框架内容大量数据,而在开发中我们很少使用。

自定义对象

SpringBoot 还提供了将配置文件中的数据封装到我们自定义的实体类对象中的方式。具体操作如下:

  • 将实体类 bean 的创建交给 Spring 管理。

    在类上添加 @Component 注解

  • 使用 @ConfigurationProperties 注解表示加载配置文件

    在该注解中也可以使用 prefix 属性指定只加载指定前缀的数据

  • BookController 中进行注入

具体代码如下:

Enterprise 实体类内容如下:

@Component
@ConfigurationProperties(prefix = "enterprise")
public class Enterprise {private String name;private int age;private String tel;private String[] subject;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getTel() {return tel;}public void setTel(String tel) {this.tel = tel;}public String[] getSubject() {return subject;}public void setSubject(String[] subject) {this.subject = subject;}@Overridepublic String toString() {return "Enterprise{" +"name='" + name + '\'' +", age=" + age +", tel='" + tel + '\'' +", subject=" + Arrays.toString(subject) +'}';}
}

BookController 内容如下:

@RestController
@RequestMapping("/books")
public class BookController {@Autowiredprivate Enterprise enterprise;@GetMapping("/{id}")public String getById(@PathVariable Integer id){System.out.println(enterprise.getName());System.out.println(enterprise.getAge());System.out.println(enterprise.getSubject());System.out.println(enterprise.getTel());System.out.println(enterprise.getSubject()[0]);return "hello , spring boot!";}
}

注意:

使用第三种方式,在实体类上有如下警告提示

这个警告提示解决是在 pom.xml 中添加如下依赖即可

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

springboot 配置文件分级

SpringBoot 中4级配置文件放置位置:

  • 1级:classpath:application.yml 【最低】
  • 2级:classpath:config/application.yml
  • 3级:file :application.yml
  • 4级:file :config/application.yml 【最高】

在jar包位置下的application.yml

config优先级最高

SpringBoot yml文件数据读取相关推荐

  1. yml配置oracle连接,springboot yml 文件配置oracle,提示账号密码错误

    最近使用Spring boot,本来一直连接的是mysql数据库,一直没问题.昨天在更换了oracle数据库后,一直提示账号密码不正确,登录被拒绝.检查多次,检查账号密码一切正常,但就是连接不上ora ...

  2. springboot yml文件不是绿叶子问题

    项目的yml文件一直不显示绿色小叶子,显示文本类型或者下图类型,项目启动运行不会影响,但是看着不爽,必需整它,终于,今天解决了. 先看一下我之前的yml格式 还有这样的,看起来不舒服. 解决方案 ct ...

  3. python 读取yml文件_python读取yaml配置文件

    什么是yaml 1.yaml [ˈjæməl]: Yet Another Markup Language :另一种标记语言.yaml 是专门用来写配置文件的语言,非常简洁和强大, 2.支持多种语言:p ...

  4. java解析yml文件_java读取解析application.yml

    java读取解析application.yml 不用依赖spring容器,可单独使用. bug已修改... 第一步.首先要2个jar com.fasterxml.jackson.dataformat ...

  5. python 导入数据对不齐_[Python] 大文件数据读取分析

    首先我们可以确定的是不能用read()与readlines()函数: 因为如果将这两个函数均将数据全部读入内存,会造成内存不足的情况. 针对数据按行划分的文件 以计算行数为例,首先针对几种不同的方法来 ...

  6. c++ 读取 .tfw 文件数据(读取 .tif 影像中的投影信息)

            关于读取 .tif 影像的投影信息,下面介绍了两种方法:         1.按读取 .txt 的方法读取 .tfw 文件:         2.使用 GDAL 直接从 .tif 影像 ...

  7. tensorflow随笔-文件数据读取

    # -*- coding:utf-8 -*- import tensorflow as tf fn_queue=tf.train.string_input_producer(["winequ ...

  8. python 读取yml文件_Python 读取 yaml 配置文件 | 文艺数学君

    摘要这一篇介绍 Python 中使用 yaml 的方式加载配置文件,包含关于 pyyaml 的简单使用,读入和写入配置文件. 简介 之前我们介绍过使用 configparser 来读取配置文件(Pyt ...

  9. darpa E3和E5数据集bin文件数据读取

    1.E3/E5数据集下载云盘中下载ta3-java-consumer.tar.gz压缩包 2.解压缩,用./json_consumer.sh可以讲数据集中的.bin文件转换成.json格式,方法如下: ...

最新文章

  1. 40 个 Spring Boot 常用注解
  2. 清理恶意插件提高上网速度
  3. vagrant up报错 Warning: Authentication failure. Retrying...解决方案
  4. java ListString 转换成带逗号的字符串
  5. 银行加速“去房地产化”
  6. qt布局嵌套_PyQt5 笔记(01):嵌套布局
  7. jdbc不能识别别名_Spark基础:读写JDBC
  8. Android自定义Dialog及与Activity的交互
  9. 【Django】ORM操作#2
  10. webpack中使用jquery
  11. 洛谷P2341 [HAOI2006]受欢迎的牛 (Tarjan,SCC缩点)
  12. 添加右键用Sublime Text3 打开文件和文件夹
  13. java实用教程——组件及事件处理——ItemEvent事件(设置字体类型)
  14. HTH的完整形式是什么?
  15. MySQL之Procedure(存储过程)和Function(函数)
  16. Macaca上手体验
  17. Java 帝国对 Python 的渗透能成功吗?
  18. 树莓派吃灰记——搭建本地git服务
  19. Google Map API 文档
  20. IDEA更改主题颜色

热门文章

  1. 安川服务器输入输出信号,最全PLC输入输出各种回路接线!
  2. android 分辨率 切图,Android设计图(标注、切图)
  3. 软件流程和管理(八):质量管理
  4. 移动通信基础(11)跳频
  5. 如何使用ricequant量化平台进行落单和回测
  6. 它的出现将统一所有浏览器存储 API ?!
  7. python xlwt xlrd_Python之xlwt和xlrd如何新建sheet
  8. HTML学习(三):文本文件
  9. Android 游戏-超级玛丽(Android studio)
  10. 通过连接大华dss平台来实现查看摄像头画面和实现云台控制功能Extjs