当前位置:网站首页 > Java基础 > 正文

加载基础参数java



一、本文介绍:

本文主要通过完整代码的形式,展示如何加载自定义配置文件中的配置项数据,并进行使用。以及如何区分内外部配置文件的加载。同时,又介绍了如何修改内存中的配置,并输出到配置文件中进行持久化保存的方法。

本文基于的环境:Idea2022.2.5(社区版)、JDK1.8、spring-boot-starter-parent 2.6.0

注意:本文介绍内容少,主要信息都在代码的注释里。

二、加载配置:

先假设有两个配置文件(注意文件的编码格式要弄成UTF-8,以支持中文)

IDEA中调整:IDEA File -> Settings -> Editor -> File Encodings -> Properties Files default encoding for properties files 需要设置为 UTF-8

内部配置文件(放在resources底下):

 

外部配置文件(放在项目文件夹之外的一处地方):

 

期望:

①项目打包时,会把【内部配置文件】打包进jar包中。同时,默认情况下,会自动加载【内部配置文件】。

②如果有配置【外部配置文件】路径,则会去加载【外部配置文件】数据,否则不加载。

③【外部配置文件】中,凡是出现的项,优先级更高,将覆盖【内部配置文件】的相同key的配置项。

④允许利用【外部配置文件】只替换【内部配置文件】中的部分配置项。

则可见配置加载类源码(CustomConfig.java):

加载基础参数java
 

不加载外部配置时:

测试方法

可以看到把内部配置文件中的数据加载出来了。

输出结果

加载外部配置时:

测试方法

可以看到,因为外部配置文件中也配置了name,所以name被替换成外部配置文件中的配置值。但是age在外部配置文件中没有对应配置项,所以age依旧使用的是内部配置文件中的配置值。

输出结果

三、修改配置并输出到配置文件:

注:没有确切需求的话,不需要考虑这个实现,有一定的局限性。

局限性:

①实际加载的是内部配置文件的话,不能用这个方法。IDE中执行时,修改的其实是这个文件夹里的对应配置文件 /target/classes/。如果是打包后执行jar包,因为内部配置文件在jar包里,所以更新的内容不能输出到内部配置文件。

②每次输出到配置文件(实际只会是外部配置文件),只能把当下内存中的配置信息全部输出,且会覆盖掉原文件的全部内容。(但是这个应该可以自行调整改造代码来优化)

期望:

①需要尽量保证内存中的配置和文件的配置是一致的。即要改就全改,不然就都不改。(提供的源码可以自行再优化,使之更健壮)

②修改配置后,无论是读取内存中的配置,还是配置文件中的配置,都是更新后的配置。

③支持中文配置值的输出(即不会变成乱码)

由此,得到源码(直接放在刚刚的CustomConfig.java文件中就行):

 

开始测试。

不加载外部配置文件时:

测试方法

前面有提及,由于不能输出到内部配置文件中,所以这里直接拒绝修改。并且为了保持一致,所以修改的内容无效,内存中的配置依旧是修改前的。

输出结果

加载外部配置文件时:

测试方法

因为新的配置内容可以输出到外部配置文件,所以修改配置是成功的。且内存中和外部配置文件中,都是新的配置值。

执行结果

注意,输出配置到配置文件中,整个文件的内容都会更新。

设置的comments,若有中文会变成 这 之类,没招,除非自己继承Properties去实现输出方法,特别是这个方法writeComments。

变化后的配置文件内容,第一行是自定义输入的comments注释,第二行是Properties内部实现的输出注释(表示输出内容的时间),第三行开始就是输出的配置对。

变化后的外部配置文件

  • 上一篇: 零基础学Java
  • 下一篇: java基础改学php
  • 版权声明


    相关文章:

  • 零基础学Java2025-04-04 14:50:01
  • java基础183讲解2025-04-04 14:50:01
  • 零基础学java要多久2025-04-04 14:50:01
  • 入门java基础2025-04-04 14:50:01
  • 编程java基础2025-04-04 14:50:01
  • java基础改学php2025-04-04 14:50:01
  • java基础 试卷2025-04-04 14:50:01
  • java基础常见面试题2025-04-04 14:50:01
  • java的基础入门2025-04-04 14:50:01
  • java基础知识教程2025-04-04 14:50:01