一,从配置文件中读取数据有哪些方法?

通常有3种用法:

1,直接使用value注解引用得到配置项的值

2,  封装到Component类中再调用

3,  用Environment类从代码中直接访问

生产环境中推荐使用第二种,用一个统一的文件来加载,

而不必写死到代码中,如果配置有变更时可以统一修改也更方便

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

对应的源码可以访问这里获取: https://github.com/liuhongdi/

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,演示项目的相关信息

1,项目地址:

https://github.com/liuhongdi/configvalue

2,功能说明:

演示了从配置文件读取数据的方法

3,项目结构:如图:

三,配置文件说明

1,pom.xml

        <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

2,application.properties

#error
server.error.include-stacktrace=always
#errorlog
logging.level.org.springframework.web=trace
#profile
spring.profiles.active=prd

3,application-dev.properties

#images
app.goods.imagesUrlHost = http://127.0.0.1:81/goods
app.goods.imagesOrigDir = /data/file/html/goods/images
app.goods.imagesTmbDir = /data/file/html/goods/tmb

4,application-prd.properties

#images
app.goods.imagesUrlHost = http://file.lhdtest.com/goods
app.goods.imagesOrigDir = /data/estore/file/html/goods/images
app.goods.imagesTmbDir = /data/estore/file/html/goods/tmb

四,java代码说明:

1,ConfigValue.java

/*
* 从配置文件中读取的变量
* lhd
* 2020.10.15
* */
@Component
public class ConfigValue {
//imagesUrlHost
@Value("${app.goods.imagesUrlHost}")
public String imagesUrlHost; //imagesOrigDir
@Value("${app.goods.imagesOrigDir}")
public String imagesOrigDir; //imagesTmbDir
@Value("${app.goods.imagesTmbDir}")
public String imagesTmbDir; }

用途:统一加载配置文件中的配置项

2,HomeController.java

@Controller
@RequestMapping("/home")
public class HomeController { @Resource
private ConfigValue configValue; @Resource
private Environment environment; //从配置文件读取变量imagesUrlHost
@Value("${app.goods.imagesUrlHost}")
private String imagesUrlHost; //三种方式打印从配置文件中读取到的变量值
@GetMapping("/home")
@ResponseBody
public String home() { String res = "第一种方法:直接用value引用:"+imagesUrlHost+":<br/>";
res += "第二种方法:封装到Component类中:"+configValue.imagesUrlHost+":<br/>";
res += "第三种方法:environment:"+environment.getProperty("app.goods.imagesUrlHost")+":<br/>"; return res;
}
}

三种方法都可以使用,但Component类耦合度更低,使用时也更方便

五,测试效果

1,访问:

http://127.0.0.1:8080/home/home

返回:

第一种方法:直接用value引用:http://file.lhdtest.com/goods:
第二种方法:封装到Component类中:http://file.lhdtest.com/goods:
第三种方法:environment:http://file.lhdtest.com/goods:

2,切换profile为dev,可以看到访问的返回数据发生了变化

六,查看spring boot的版本:

  .   ____          _            __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.3.4.RELEASE)

spring boot: 从配置文件中读取数据的常用方法(spring boot 2.3.4)的更多相关文章

  1. spring boot 项目从配置文件中读取maven 的pom.xml 文件标签的内容。

    需求: 将pom.xml 文件中的版本号读取到配置文件并打印到日志中. 第一步: 在pom.xml 中添加以下标签. 第二步: 将version 标签的值读取到配置文件中 这里使用 @@  而不是  ...

  2. Feign从配置文件中读取url

    Feign的url和name都是可配置的,就是从配置文件中读取的属性值,然后用占位符引用就可以了: ${rpc.url} @FeignClient(name = "me", url ...

  3. 一个I/O线程可以并发处理N个客户端连接和读写操作 I/O复用模型 基于Buf操作NIO可以读取任意位置的数据 Channel中读取数据到Buffer中或将数据 Buffer 中写入到 Channel 事件驱动消息通知观察者模式

    Tomcat那些事儿 https://mp.weixin.qq.com/s?__biz=MzI3MTEwODc5Ng==&mid=2650860016&idx=2&sn=549 ...

  4. sping boot/cloud配置文件 on 读取为true

    sping boot/cloud配置文件 on 读取为true 原文地址:https://blog.csdn.net/hb9176070/article/details/82749771 最近在写sp ...

  5. 归纳从文件中读取数据的六种方法-JAVA IO基础总结第2篇

    在上一篇文章中,我为大家介绍了<5种创建文件并写入文件数据的方法>,本节我们为大家来介绍6种从文件中读取数据的方法. 另外为了方便大家理解,我为这一篇文章录制了对应的视频:总结java从文 ...

  6. 从多个XML文档中读取数据用于显示webapi帮助文档

    前言: 你先得知道HelpPageConfig文件,不知道说明你现在不需要这个,所以下文就不用看了,等知道了再看也不急.当然如果你很知道这个,下文也不用看了,因为你会了. 方法一: new XmlDo ...

  7. ffmpeg 从内存中读取数据(或将数据输出到内存)

    更新记录(2014.7.24): 1.为了使本文更通俗易懂,更新了部分内容,将例子改为从内存中打开. 2.增加了将数据输出到内存的方法. 从内存中读取数据 ffmpeg一般情况下支持打开一个本地文件, ...

  8. 程序一 用记事本建立文件src.dat,其中存放若干字符。编写程序,从文件src.dat中读取数据,统计其中的大写字母、小写字母、数字、其它字符的个数,并将这些数据写入到文件test.dat中。

    用记事本建立文件src.dat,其中存放若干字符.编写程序,从文件src.dat中读取数据,统计其中的大写字母.小写字母.数字.其它字符的个数,并将这些数据写入到文件test.dat中. #inclu ...

  9. java从文件中读取数据然后插入到数据库表中

    实习工作中,完成了领导交给的任务,将搜集到的数据插入到数据库中,代码片段如下: static Connection getConnection() throws SQLException, IOExc ...

随机推荐

  1. 2020重新出发,JAVA高级,JVM种设计模式

    Java的23种设计模式全面解析 设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路.它不是语法规定,而是一套用来提高代码可复用性.可维护性.可读性.稳健 ...

  2. mock接口开发——flask模块

    1.mock接口开发: #1.模拟没有开发好的接口,你可以模拟它,,,,,,,需要调用其他系统的接口 #2.给别人提供数据 2.步骤:1.安装pip install flask 2.导入模块--起服务 ...

  3. @Embedded 和 @Embeddable

    自定义类型在hibernate中实现自定义类型,需要去实现UserType接口即可或者以Component的形式提供. JPA的@Embedded注解有点类似,通过此注解可以在Entity模型中使用一 ...

  4. Redis散列(Hash)的相关命令

    散列 就像一个减配的Redis 内部及其类似Java的Map 内容就是key:value结构 hash类型在面向对象编程的运用中及其适合,因为它可以直接保存编程语言中的实体类关系 增 hset hse ...

  5. linux学习(一)认识阿里云

    一.简介 阿里云,全球领先的云计算服务平台,阿里巴巴集团旗下公司.致力于打造公共.开放的云计算服务平台.提供云服务器ECS.关系型数据库服务RDS.开放存储服务OSS.内容分发网络CDN.对象存储OS ...

  6. Oracle学习(六)存储过程

    一.简介 1.定义 所谓存储过程,就是一段存储在数据库中执行某块业务功能的程序模块. 它是由一段或者多段的PL/SQL代码块或者SQL语句组成的一系列代码块. 2.结构分析 create [or re ...

  7. C#设置装配加载选项

    NX在打开装配时,需要设置加载方式,如下图所示: 因此,当装配进行了拷贝之后,PART路径变化,再次用NX打开时,会报无法加载的错误.这时需要重新设置从搜索文件夹打开,再次保存之后,之后再按照保存打开 ...

  8. UGOPEN实现解析NX表达式

    UGOPEN函数UF_MODL_dissect_exp_string可以解析表达式,但是当表达式存在附注信息时,会将附注信息附加在 rhs_str上,例如: 这样,当单独获取附注信息时还需要拆分字符串 ...

  9. Spring事务管理(编码式、配置文件方式、注解方式)

    1.事务(https://www.cnblogs.com/zhai1997/p/11710082.html) (1)事务的特性:acdi (2)事务的并发问题:丢失修改,脏读,不可重复读 (3)事务的 ...

  10. IDEA文本编辑区的护眼绿豆沙色配置

    第一步:打开IDEA -> File -> settings -> Editor -> Color Scheme -> General 第二步:找到右方Text -> ...