原生java读取properties与spring中@value、@ConfigurationProperties读取配置文件

1.properties类

Properties 继承于 Hashtable。表示一个持久的属性集.属性列表中每个键及其对应值都是一个字符串。

Properties 类被许多 Java 类使用。例如,在获取环境变量时它就作为 System.getProperties() 方法的返回值。

Properties 定义如下实例变量.这个变量持有一个 Properties 对象相关的默认属性列表。

简单使用

新建对象Properties properties = new Properties();
读取到文件流FileInputStream fileInputStream = new FileInputStream(ResourceUtils.getFile("classpath:homepage_config.properties"));
加载到properties对象中properties.load(fileInputStream);
loda源代码public synchronized void load(InputStream inStream) throws IOException {load0(new LineReader(inStream));
}
获取属性String url = properties.getProperty("homepageconfig.api");
getProperty源代码
public String getProperty(String key) {Object oval = super.get(key);String sval = (oval instanceof String) ? (String)oval : null;return ((sval == null) && (defaults != null)) ? defaults.getProperty(key) : sval;
}

2.spring中使用@value与@ConfigurationProperties

2.1@Value注解

@Value注解的作用时通过注解将常量、配置文件中的值、其它bean的属性值注入到变量中,作为标量的初始值。

2.1.1常量注入

@Value(“#{1}”)

private int constant; //常量

@Value(“no”)

Private String no;//注入普通字符串

@Value(“classpath:com/hry/a/config.txt”)

Private Resource resourceFile //注入文件资源

@Value(“http://www/bai.du.com”)

Privatr Resource testUrl; //注入URL资源

2.1.2Bean属性、系统属性、表达式注入@Value(“#{}”)

Bean属性注入需要注入者和被注入者属于同一个IOC容器,或者父子IOC容器关系,在同一个作用域内。

@Value(“#{beanInject.another}”)

Private String fromAnotherBean //注入其它Bean属性:注入beanInject对象的属性another,类具体定义见下面

@Value(“#{systemProperties[‘os.name’]}”)

Private String systemProperetiesName; //注入操作系统属性

@Value(“#{T(java.lang.Math).random()*100.0}”)

Private double randomNumber; //注入表达式结果

//从指定属性源获取属性值(jvm属性)

@Value("#{systemProperties['spring.application.json']}")private String systemPropertiesjson;

//从指定属性源获取属性值(系统环境属性源)

@Value("#{systemEnvironment['HOME']}")private String systemEnvironmentHOME;

//从指定属性源获取属性值 默认值

@Value("#{systemEnvironment['HOME22']?:'default'}")private String systemEnvironmentHOMEdefault;

2.1.3配置文件属性注入@Value(“${}”)

@Value(“#{}”)读取配置文件中的值,注入到变量中去。配置文件分为默认配置文件application.properties和自定义配置文件

application.properties。application.properties在spring boot启动时默认加载此文件

自定义属性文件。自定义属性文件通过@PropertySource加载。@PropertySource可以同时加载多个文件,也可以加载单个文件。如果相同第一个属性文件和第二个属性文件存在相同的key,则最后一个属性文件里的key启作用。加载文件的路径也可以配置变量,如下文的${anotherfile.configinject} 此值定义在第一个属性文件config.properties

第一个属性文件config.properties内容如下:

${anotherfile.configinject}作为第二个属性文件加载路径的变量值

book.name =bookName

anotherfile.configinject = placeholder

   第二个属性文件config_placeholder.properties内容如下:Book.name.placeholder = bookNamePlaceholder下面通过@Value("${app.name}")语法将属性文件的值注入bean属性值,详细代码见:@Component

//引用自定义配置文件

@ProperlySource({“classpath:com/hry/config.properties”,

//引用自定义配置文件。${anotherfile.configinject}则是config.propertoes文件中的第二个属性值,会被替换为config_placeholder.properties.

“classpath:com/hty/config_${anntherfile.configinject}.properties” })

Public class ConfigurationFileInjrct{

   @Value(“${app.name}”)Private String appName; //这里的值来自application.properties, spring boot启动时默认加载此文件@Value(“${book.name}”)Private String bookName; //注解第一个配置文件config.properties的第一个属性@Value(“${bookname.placeholder}”private String bookNamePlaceholeder; //注入第二配置的外部文件属性

}

@Value(“#{}”)和@Value("KaTeX parse error: Expected 'EOF', got '#' at position 20: …}")的区别 @Value(“#̲{}”) 表示SpEl通表达式…{xxxx}”)注解从配置文件读取值的用法

注意:

如果多个配置文件中存在相同的配置,具体来说就是两个properties文件中存在两个相同的key

2.2@ConfigurationProperties

ConfigurationProperties其实就类似于使用多个@Value同时绑定,绑定的对象就是DataSource类型的对象,而且是 隐式绑定 的,意味着在配置文件编写的时候需要与对应类的字段名称 相同。

@ConfigurationProperties 和 @value 有着相同的功能,但是 @ConfigurationProperties的写法更为方便
@ConfigurationProperties 的 POJO类的命名比较严格,因为它必须和prefix的后缀名要一致, 不然值会绑定不上, 特殊的后缀名是“driver-class-name”这种带横杠的情况,在POJO里面的命名规则是 下划线转驼峰 就可以绑定成功,所以就是 “driverClassName”。
@Value注解和@ConfigurationProperties,读取配置文件的属性
使用:

@Component
@ConfigurationProperties(prefix = "com.healai")
public class CustomConfig {private String chcpDatabase;private String ossBucketName;private String asqIP;private String env;private String chcpIP;private String heartBeatIP;// get、set}

原生java读取properties与spring中@value、@ConfigurationProperties读取配置文件相关推荐

  1. java调度:(四) spring中使用quartz的配置文件.

    quartz主要是三个部分:Scheduler Job Trigger,其中,Job 负责定义需要执行的任务,Trigger 负责设置调度策略,Scheduler 将二者组装在一起,并触发任务开始执行 ...

  2. 太实用了!在Java的Word 文档中插入或读取艺术字

    太实用了!在Java的Word 文档中插入或读取艺术字 简直不能太实用! 扫码关注<Java学研大本营>,加入读者群,分享更多精彩 艺术字是一组文本样式,允许您向文本添加设计元素,例如填充 ...

  3. Spring中加载xml配置文件的六种方式

    Spring中加载xml配置文件的六种方式 博客分类: Spring&EJB XMLSpringWebBeanBlog  因为目前正在从事一个项目,项目中一个需求就是所有的功能都是插件的形式装 ...

  4. Spring中,applicationContext.xml 配置文件在web.xml中的配置详解

    Spring中,applicationContext.xml 配置文件在web.xml中的配置详解 2016年10月04日 15:22:26 阅读数:7936 转自http://www.cnblogs ...

  5. java怎么加定时器,Spring中定时器实现

    在一些工作需要使用到定时器,Spring很好的集成了定时器的功能! 在Spring 中使用Quartz,本文介绍Spring3.0以后自主开发的定时任务工具,spring task,可以将它比作一个轻 ...

  6. spring 加载java类_在Spring中基于Java类进行配置的完整步骤

    在Spring中基于Java类进行配置的完整步骤 发布于 2020-7-7| 复制链接 基于Java配置选项,可以编写大多数的Spring不用配置XML,下面 前言JavaConfig 原来是 Spr ...

  7. Java笔记-AnnotationConfigApplicationContext在Spring中的例子

    Bean在Spring中是可以代替xml文件的.Bean在@Configuration中被创建. 应用程序的配置通过AnnotationConfigApplication加载的.AnnotationC ...

  8. 读取properties资源文件中的参数

    properties资源文件是放在resource目录下的: 新建工具类: package com.demo.utils;import java.io.InputStream; import java ...

  9. java http soap_在Spring中发布SOAP HTTP Webservice - Java杂家 - Blo...

    通常在Spring发布Hession,RMI等,是非常方便的, 但是要发布SOAP类型的WebService则要依赖一个独立的Servlet容器(如Tomcat+Axis), 这种Webservice ...

最新文章

  1. Java 项目UML反向工程转化工具
  2. Android--查找程序根目录下所有文件/Java IO操作
  3. 05--MySQL自学教程:DDL(Data Definition Language:数据库定义语言)操作数据库中的表(二)
  4. 【快乐水题】709. 转换成小写字母
  5. 推荐 12 个学习前端必备的神仙级工具类项目与网站
  6. 编程入门:C语言基础知识全网超全不用到处找了!
  7. 刘歧:FFmpeg Filter深度应用
  8. 「JupyterLab」 Jupyter Notebook 新生代IDE模式页面
  9. maple 2018 窗口关闭提示乱码_iPhone最废柴却无法关闭的俩功能,我终于屏蔽了!...
  10. Spring解决bean之间的循环依赖(循环引用)
  11. 别把可视化不当事,看完大屏模板,Excel和PPT直言比不过
  12. 使用redis中的watch解决秒杀系统中抢购问题
  13. f(f(x))=-x, 纯数学理解
  14. VS Code环境下编辑、编译、下载Keil工程代码
  15. Vue中 引入使用 vue-json-views
  16. 基于JAVA游泳馆信息管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  17. 对于大数据的发展,主要划分为哪几大阶段?
  18. Java游戏编程初步
  19. 2020年复旦大学计算机学院夏令营经历
  20. python电影情感评论分析_python--电影评论文本情感分类

热门文章

  1. 英语练习122 Time flies
  2. linux文件目录类、pwd 显示当前工作目录的绝对路径、列出目录的内容
  3. 1500 多款 3D Emoji,承担你的表情包!
  4. 7.volatile怎么通过内存屏障保证可见性和有序性?
  5. tool_AutoMan
  6. php外翻截骨术,楔形截骨术与V形截骨术治疗拇外翻效果相似
  7. 基于深度指标的网络脆弱性攻击代价定量评估方法
  8. 8口千兆工业级以太网光纤收发器 4光4电全千兆导轨式工业以太网交换机 宽温交换机
  9. 最优化方法——QR Factorization
  10. 2018年工科生推免保研经历记录(含西交,上交,北航,浙大和清华等)