目录
- ✨前言:
- ✨1.什么是配置文件
- ✨配置文件的作用
- ✨配置文件的格式
- ✨2.不同格式的配置文件常用的有以下几种:
- ✨3.怎么读取配置文件?
✨前言:
✨1.什么是配置文件
配置文件本质上是包含成功操作程序所需信息的文件,这些信息以特定方式构成。是用户可配置的,通常存储在纯文本文件中
配置文件可以是各种格式,完全凭借程序员的发挥,不过出于方便,大部分会选择的配置文件格式集中在那几种.一般而言程序启动时,会加载该程序对应的配置文件内的信息
✨配置文件的作用
在我们所编写的项目中,所有的重要数据都是在配置文件中配置的,因此配置文件是非常重要的。
有这么几点作用:
1.数据库的连接工作
2.端口号的配置
3.打印日志等等
我们的后端程序都是要连接数据库的,所以没有配置信息你就不能连接数据库,甚至不能排查日志问题。
✨配置文件的格式
配置⽂件有:
.properties
后缀是 .properties的一种文件,他和和yml文件,json格式一样都是属性文件,内部以key=value格式存储内容,一般以这种文件设置一些参数,使代码更加灵活(比方说:数据库文件等等都是在properties文件中),使用这种文件在不同环境中只需要更改配置文件即可。
键值对格式存储数据
“ = ” 后面,值前面的空格,会自动忽略掉。
值后面的空格,不会忽略。
“ = ” 后面的双引号不会忽略。
“ # ”号后面内容,为注释,
✨2.不同格式的配置文件常用的有以下几种:
配置文件格式 | 简介 | 语法定义 | 优点 | 缺点 | 常见使用场景 | 常见编程语言 |
INI | 简单的文本文件格式 | 节(section)和键值对(key-value pairs) | 简单易懂,容易编辑和维护 | 对复杂数据结构和嵌套层次支持有限 | 存储简单的配置信息 | Python, Java, C# |
XML | 用于存储和传输数据的标记语言 | 标签(tags)和属性(attributes) | 自我描述性和可扩展性,支持复杂数据结构和命名空间 | 语法较冗长,文件体积较大,解析和处理速度较慢 | 跨平台和跨语言的数据交换 | Java, C#, JavaScript |
YAML | 人类可读的数据序列化格式 | 缩进和结构化的键值对 | 简洁的语法和易读性,支持注释和引用 | 对一些复杂数据结构的表示相对有限 | 配置文件和数据序列化 | Python, Ruby, JavaScript |
JSON | 轻量级的数据交换格式 | 花括号表示对象,方括号表示数组,键和字符串值需用双引号括起 | 简洁的语法和广泛的支持,易于解析和处理 | 不支持注释,相对其他格式可能稍显冗长 | 前后端数据传输,API交互 | JavaScript, Python, Java |
Properties | 简单的键值对文件格式 | 键值对,使用等号或冒号分隔 | 简单易懂,易于解析和处理 | 对复杂数据结构和嵌套层次支持有限 | 存储简单的配置信息 | Java |
TOML | 面向配置文件的语言 | 键值对和表(Table) | 简洁易读,支持注释和多种数据类型 | 相对较新,支持度可能稍低 | 配置文件和数据序列化 | Rust, Go, Python |
HCL | HashiCorp 公司开发的配置语言 | 块和键值对 | 简洁易读,支持复杂数据结构和嵌套 | 相对较新,使用场景相对局限 | 基础设施自动化和云环境管理 | Terraform |
YAML Front Matter | 嵌入在文件开头的YAML格式元数据块,常用于静态网站生成器 | YAML语法 | 灵活易读,方便管理网站元数据 | 仅适用于特定场景 | 静态网站生成器 | Jekyll, Hugo, Gatsby |
.env | 用于存储环境变量配置的简单文本文件 | 键值对,使用等号或冒号分隔 | 简单易懂,方便管理环境变量 | 不适合复杂配置需求 | 环境变量配置 | Node.js, Python, Ruby, Go, Java |
✨3.怎么读取配置文件?
1.加载配置文件
//加载配置文件
Properties properties=new Properties();
properties.load(new FileInputStream("src\\jdbc.properties"));
//在工厂中创建一个数据源,数据源的连接信息来源于properties配置文件中
DataSource dataSource= DruidDataSourceFactory.createDataSource(properties);
Connection connection=dataSource.getConnection();
ResultSet rs=connection.prepareStatement("select count(*) from studenttab").executeQuery();
if(rs.next()){
System.out.println(rs.getInt(1));
}
connection.close();//释放连接----》将当前的工作连接,释放为空闲连接
2.将配置文件放在map集合里面代码实现:
//将配置信息放在map集合中
HashMap map=new HashMap();
map.put("driverClassName","com.mysql.cj.jdbc.Driver");
map.put("url","jdbc:mysql://localhost:3306/chenzhoudianyin");
map.put("username","root");
map.put("password","root");
map.put("initialSize","10");
map.put("minIdle","5");
map.put("maxActive","500");
map.put("maxWait","5000");
//加载配置文件
Properties properties=new Properties();
properties.load(new FileInputStream("src\\jdbc.properties"));
//在工厂中创建一个数据源,数据源的连接信息来源于properties配置文件中
DataSource dataSource= DruidDataSourceFactory.createDataSource(map);
Connection connection=dataSource.getConnection();
ResultSet rs=connection.prepareStatement("select count(*) from studenttab").executeQuery();
if(rs.next()){
System.out.println(rs.getInt(1));
}
connection.close();//释放连接----》将当前的工作连接,释放为空闲连接
}