配置文件及读取方法

    • 前言
    • properties 文件
      • 文件内容
      • 文件解析
    • xml 文件
      • 文件内容
      • 文件解析
    • json文件
      • 文件内容
      • 文件解析
    • yaml 文件
      • 文件内容
      • 文件解析:
  • 总结

前言

  当前被人熟知的数据格式有 properties, xml,json,yaml, 其中properties 经常在 spring 工程中作为配置文件, xml用于爬虫,json用于服务器之间的交互, yaml常用于spring boot工程, 一下将对这4个文件格式做详细的论述 !!!


properties 文件

文件内容

properties 文件是由键值对组成的

#redis的服务器地址
host=127.0.0.1
#redis的服务端口
port=6379
#链接数据库
default.db=0
#客户端超时时间单位是毫秒
timeout=60000
#最大连接数
maxActive=300
#最大空闲数
maxIdle=100
#最小空闲数
minIdle=1
#最大建立连接等待时间
maxWait=1000
#指明是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个
testOnBorrow=true
#当调用return Object方法时,进行有效性检查
testOnReturn=true

文件解析

  1. 使用 java.util.Properties 类进行解析
import java.util.Properties;try{// 使用类的反射机制构造文件输入流InputStream inputStream = Properties.class.getClassLoader().getResourceAsStream("***.properties")
}catch(IOException e){e.printStackTrace();
}// 解析输入流
Properties properties = new Properties();
properties.load(inputStream);// 获取所有键值
Set<String> propertyNames = properties.stringPropertyNames();//输出键值对
for(String propertyName : propertyNames){Object propertyValue = properties.get(propertyName);System.out.println("属性名" + propertyName + "属性值:" + propertyValue);
}//如果想写配置可以构造文件输出流,并使用 Properties:store(outputStream, comment)
//进行存储 
  1. Spring 框架进行解析
<!-- 在 application 中将配置文件配置成为一个 bean -->
<bean class = "org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name = "location" value="classpath:db.properties" />
</bean><!--在之后的bean的声明中就可以通过 ${key} 的方式获取相应的属性-->

xml 文件

文件内容

 <!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css"integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"><title>Document</title></head></html>

文件解析

当前很少使用 xml 文件做环境配置, 对xml 文件的解析更多的是解析某个网页的内容(爬虫)
可以通过 dom4j 这个jar包进行 xml 文件的解析

json文件

文件内容

{"key1":value1, "key2":value2}

文件解析

同样,几乎没用使用进行json作为配置文件的, json 数据格式的应用场景主要是端到端(服务器与服务器,服务器与前端)的数据交换, 可以使用 fastJson这个包进行解析

yaml 文件

文件内容

1.大小写敏感
2. 使用缩进表示层级关系, 缩进空格数表示层级
3. 注释为 #
4. 数据类型:
(1)键值对

 key_level:key1: value1       key2: value2

(2)数组:按照次序排列的值

   companies: [{id: 1,name: company1,price: 200W},{id: 2,name: company2,price: 500W}]

(3)纯数:单个不可再分的值

 key_level:# value1, value2 就是纯数key1: oh      key2: lalal

文件解析:


Yaml 文件有层级关系, 所以可以将工程需要的所有配置信息写到一个文件中, 然后通过前缀将配置信息装配到指定的配置类中:

如我要装配dataSource的配置信息:

@ConfigurationPropartion(“datasource”)
class DataSource
private String driver;
private String url;
private String username;
private String password

这样 spring boot 框架就知道我要将dataSource中的信息装配到这个配置类中了。


总结

.yaml 文件 + config / 配置类 是非常管理工程配置信息的方法,强烈推荐使用 !!!

Java配置文件学习相关推荐

  1. Java EE学习心得

    –Java EE学习心得   1.    称为编程专家的秘诀是: 思考-----编程--------思考------编程--.. 编程不能一步到位,不能一上来就编,必须先思考如何写,怎样写?然后再编程 ...

  2. 转载:mongoDB java驱动学习笔记

    http://www.blogjava.net/watchzerg/archive/2012/09/22/388346.html mongoDB java驱动学习笔记 指定新mongo实例: Mong ...

  3. Java新手学习路线

    ------Java新手学习路线------ 第一阶段:J2SE(java基础部分) java开发前奏; . ①计算机基本原理,Java语言发展简史以及开发环境的搭建,体验Java程序的开发,环境变量 ...

  4. Java 基础学习-Java语言概述

    Java 基础学习 第一章 Java语言概述 回顾java基础知识,进行整理记录. 文章目录 Java 基础学习 前言 一. Java语言发展史(了解) 二.Java语言跨平台原理(理解) 三.JRE ...

  5. 深圳Java培训学习:SpringBoot的yml配置及多环境切换【千锋】

    深圳Java培训学习:SpringBoot的yml配置及多环境切换[千锋] 1,配置风格 从application.properties转换到application.yml 并不改变功能效果,只是改变 ...

  6. Java基础学习——第十章 枚举类注解

    Java基础学习--第十章 枚举类&注解 一.枚举类(enum) 1. 枚举类的概念 枚举类:类的对象只有有限个,确定的 线程状态:创建.就绪.运行.阻塞.死亡 当需要定义一组常量时,强烈建议 ...

  7. 尚学堂JAVA高级学习笔记_1/2

    尚学堂JAVA高级学习笔记 文章目录 尚学堂JAVA高级学习笔记 写在前面 第1章 手写webserver 1. 灵魂反射 2. 高效解析xml 3. 解析webxml 4. 反射webxml 5. ...

  8. Java进阶学习 - Dubbo框架(持续更新中~~)

    Java进阶学习 - Dubbo框架 1.简介 Dobbo是一个高性能的RPC框架,解决了分布式钟的调用问题 优点:解决了分布式系统中互相调用问题 缺点:缺少统一管理的调度中心 2.为什么Dubbo说 ...

  9. java体系学习总结记录——超长篇

    Java体系学习 一.主流语言介绍 1.c语言:底层编程,比如嵌入式.病毒开发等应用,可以替代汇编语言来开发系统程序:高层应用可以开发从操作系统到各种应用软件.是一种面向过程的语言. 2.java:广 ...

最新文章

  1. 微信小程序尝鲜一个月现状分析
  2. 计算机操作系统课设总结,计算机操作系统课程设计
  3. legend3---3、lavarel页面post请求错误之后跳转
  4. username is marked non-null but is null
  5. Asterisk realtime 之SIP用户动态写入mysql 数据库
  6. 自己编制windows的后台进程程序
  7. Windows Communication Foundation from msdn
  8. ttys和tty_Linux中tty、pty、pts的概念区别
  9. samba服务器的搭建【在windows查看linux的共享文件】
  10. lightoj1234 打表技巧:分块打表
  11. stm32定时器编码器模式原理及配置
  12. ReflectionUtils.invokeMethod的作用
  13. Java 编程技术中汉字问题的分析及解决
  14. 吉列公司申请3D打印剃须刀架技术专利
  15. 高精度计算(三)压位
  16. 自签名多级证书亲测可用
  17. rust前哨站_rust - diesel 1 的安装与使用 (连接数据库,读取)
  18. 皮尔森相关性的相似度
  19. 局域网助手_WiFi换机助手下载-WiFi换机助手v1.0.3下载
  20. android 视频录制 保存到本地

热门文章

  1. CentOS 7.2 安装Subversion(SVN)
  2. 学会了C语言究竟能干什么呢?
  3. eclipse-svn插件
  4. ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.
  5. 基于pytorch下用LSTM做股票预测——超详细
  6. 你未必知的拼音打字快打十招
  7. 模仿QQ空间 网页设计
  8. html中怎么写艺术字,用CSS设计艺术字
  9. wr720n刷成网络打印_USB打印机通过路由共享wifi局域网打印,同网段
  10. 教程7--Schemas和客户端库