属性文件(Properties files)知识

目录

什么是属性文件 ?

properties文件特点

 Properties类的重要方法

属性文件的应用场景?

Java如何读取属性文件?

Java 读取 .properties 配置文件的几种方式 

如何在Spring容器中使用属性文件?

.properties文件一般放在项目哪个目录下?


属性文件是一种存储键值对的文件格式,以.key=value的形式存储,其中key为属性名,value为属性值。属性文件通常使用.properties作为后缀名,是Java中一种常用的配置文件格式。除了.properties文件之外,还有其他类型的属性文件,包括:

1. XML 属性文件:XML属性文件将用户定义的键值对保存在XML格式中,格式比较严格,支持自定义标签、属性、命名空间等,在一些场景下可以替代properties文件。
2. YAML 属性文件:YAML也是一种配置文件格式,它使用缩进来表示层级关系,不需要使用特殊符号如XML的<>或JSON的{},因此比较易读易写,常被用于服务器端程序的配置文件。
3. JSON 属性文件:与YAML类似,JSON属性文件也是一种比较常见的配置文件格式,支持层级结构和复杂数据类型等特性,可用于Web前端开发、服务端开发等多个领域。

这些属性文件格式各有特点,不同的应用场景可以选择不同的属性文件格式。

当涉及到软件开发时,属性文件(Properties files)是一种常见的配置文件格式,它被用来存储应用程序的配置数据。这种文件通常以 key-value 的形式组成,其中 key 和 value 都是字符串类型,中间用等号 "=" 分隔,如 "key=value"。

通常情况下,属性文件比较简单,因此它在多种软件领域得到了广泛应用,例如 Java 技术中,常常用于存储各种参数配置,如数据库连接信息、邮件服务器地址和端口号等等。Java 中的 Properties 类可以用来操作属性文件。

当应用程序需要对不同的环境进行配置时,比如说开发环境、测试环境和生产环境,开发人员可以通过修改属性文件的方式来实现快速切换环境,从而有效地提高开发效率。

 


什么是属性文件 ?

定义:一个扩展名为properties文件,属性文件都是以key-value(键值对)来保存文件的内容,如:log4j.properties,db.properties等。

oracle.driverClassName=oracle.jdbc.driver.OracleDriver
oracle.dburl=jdbc:oracle:thin:@localhost:1521:orcl
oracle.username=dang
oracle.psw=yeshicheng

1.后缀properties是一种属性文件。
2.这种文件以key=value格式存储内容。
3.一般这个文件作为一些参数的存储,代码就可以灵活一点。
4.通俗点讲就相当于定义一个变量,在这个文件里面定义这些变量的值,在程序里面可以调用这些变量,好处就是,如果程序中的参数值需要变动,直接来改这个.property文件就可以了,不用在去修改源代码。
 

properties文件特点

1、键值对格式。
2、“ = ”等号后面,值前面,的空格,会自动忽略掉。
3、值后面的空格,不会忽略。
4、“ = ”等号后面的双引号,不会忽略。
5、“ # ”号后面内容,为注释,忽略。

 Properties类的重要方法

Properties 类存在于包 Java.util 中,该类继承自 Hashtable
1. getProperty ( String key) , 用指定的键在此属性列表中搜索属性。也就是通过参数 key ,得到 key 所对应的 value。
2. load ( InputStream inStream) ,从输入流中读取属性列表(键和元素对)。通过对指定的文件(比如说上面的 test.properties 文件)进行装载来获取该文件中的所有键 - 值对。以供 getProperty ( String key) 来搜索。
3. setProperty ( String key, String value) ,调用 Hashtable 的方法 put 。他通过调用基类的put方法来设置 键 - 值对。
4. store ( OutputStream out, String comments) , 以适合使用 load 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。与 load 方法相反,该方法将键 - 值对写入到指定的文件中去。comments用来给配置文件添加注释
5.keySet ( ) ,拿到properties中所有的key。
6.clear ( ) ,清除所有装载的 键 - 值对。该方法在基类中提供。 

属性文件的应用场景?

企业主要作用和应用范围举例:
1.日志文件信息,一般取名为log4j.properties ;
2 数据库连接信息,一般取名为db.properties;
3.数据源的配置信息(连接池相关信息)

Java如何读取属性文件?

第一步.读取属性文件第一步,创建一个属性文件对象【Properties properties = new Properties();】
第二步.把Resource属性文件转换为一个流对象【有两种方式:1.通过文件输入字节流;2.通过反射技术。】
第三步.向属性文件对象赋值【有两种方式赋值:setProperty(key, value)直接赋值和load(is)一次性加载赋值。】
第四步.获取属性文件中某一个属性的值【getProperty(key)】

package spring201909;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class TestReadProperties {
public static void main(String[] args) {
try {
// 第一步.读取属性文件第一步 创建一个属性文件对象
//Properties保存数据和读取数据的底层方式和Hashmap Hashtable一样
//都是key-value方式来保存和通过key来读取数据
Properties properties = new Properties();

//第二步.把Resource属性文件转换为一个流对象
//getResourceAsStream中的Resource资源在本例子中指的是属性文件
//当然,在别的例子中还可以是xml,txt等多种资源文件
//BufferedInputStream就是提高读取效率缓冲字节输入流,是输入字节流的包装类
//第一种方法:根据属性文件的路径找到属性文件,并且封装为文件输入字节流
//InputStream is=
//    new BufferedInputStream(new FileInputStream("config/properties/db.properties"));
//第二种方法:通过反射中,类对象的getResourceAsStream把资源转换为流对象
InputStream is = new BufferedInputStream(TestReadProperties.class.getResourceAsStream(
"/properties/db.properties"));

//第三步.向属性文件对象赋值
// properties.setProperty(key, value)直接赋值异常麻烦而且工作量大
// load等于多次调用setProperty这个方法 把is流对象代表的db.properties文件中的全部key和value一次次的保存到属性文件中
properties.load(is);
// 第四步.获取属性文件中某一个属性的值
System.out.println(properties.getProperty("oracle.driverClassName"));
} catch (IOException e) {
e.printStackTrace();
}
}
}

Java 读取 .properties 配置文件的几种方式 

a、基于ClassLoder(类加载器)读取配置文件
注意:

  • 配置文件一定要放到当前目录下。
  • (目录层次也可以从src下面的文件夹开始但不必包含src,且不必包含反斜杠开头。)
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class demo01 {
    public static void main(String[] args) {
        Properties properties = new Properties();
        //使用ClassLoader加载properties配置文件生成对应的输入流
        InputStream in = demo01.class.getClassLoader().getResourceAsStream("config/config.properties");
        try {
            //使用properties对象加载输入流
            properties.load(in);
            //根据key获取对应的value
            String url = properties.getProperty("url");
            System.out.println("url:"+url);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 b、基于 InputStream 读取配置文件
注意:该方式的优点在于可以读取任意路径下的配置文件.

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;

public class Demo02 {
    public static void main(String[] args) {
        Properties properties = new Properties();
        try {
            //使用InputStream流 读取配置文件
            BufferedReader bufferedReader = new BufferedReader(new FileReader("C:/Users/szwb093/Desktop/config.properties"));
            //使用properties对象加载输入流
            properties.load(bufferedReader);
            //根据key获取对应的value
            String url = properties.getProperty("url");
            System.out.println("url:"+url);

        } catch (FileNotFoundException e1) {
            e1.printStackTrace();
        }catch (IOException e) {
            e.printStackTrace();
        }
    }
}

c、通过 java.util.ResourceBundle 类来读取,这种方式比使用 Properties 要方便一些
通过 ResourceBundle.getBundle() 静态方法来获取(ResourceBundle是一个抽象类),这种方式来获取properties属性文件不需要加.properties后缀名,只需要文件名即可。

//config为属性文件名,放在包config下,如果放在src下(资源文件夹下),直接用config即可
ResourceBundle resource = ResourceBundle.getBundle("config/config");
String url = resource.getString("url");
System.out.println("url:"+url);

如何在Spring容器中使用属性文件?

第一步:加载db.properties属性文件
1.1 首先改变头文件,增加支持context标签的spring-context.xsd文件和xml命名空间【xmlns:context="http://www.springframework.org/schema/context"】【http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd】
1.2 添加context标签,将properties文件加载到上下文环境中【
第二步:通过表达式获取属性文件中的值,实现注入【${key}】










classpath:properties/db.properties
classpath:properties/log4j.properties







${oracle.driverClassName}
${oracle.dburl}
${oracle.username}
${oracle.psw}
${log4j.infolevel}



 


.properties文件一般放在项目哪个目录下?

.properties 文件通常被用于存储应用程序的配置信息。在 Java 项目中,.properties 文件一般放在 src/main/resources 目录下。

src/main/resources 目录是 Maven 等构建工具的默认资源目录,它会将该目录下的资源文件打包到最终生成的 JAR 或 WAR 包中。这样,应用程序就可以在运行时访问 .properties 文件了。

如果需要根据不同环境使用不同的配置文件,可以在 src/main/resources 目录下创建不同的配置文件,如:

  • application-dev.properties:开发环境配置文件
  • application-prod.properties:生产环境配置文件

在运行时,根据需要选择对应的配置文件,例如通过设置系统环境变量或命令行参数来指定使用的配置文件。


在 Java 项目中,.properties 文件通常用于存储应用程序的配置信息。由于 .properties 文件的格式简单、易读易写,它被广泛用于 Java 技术中。

Java 的集合库提供了 Properties 类来读写 .properties 文件。通过 Properties 类,可以方便地读取、修改、保存配置文件中的属性信息,如数据库连接字符串、端口号等等。

.properties 文件一般放置在 src/main/resources 目录下,这样它们就能够被打包到最终生成的 JAR 或 WAR 包中,在应用程序运行时被访问到。

在 Spring 等框架中,使用 .properties 文件可以轻松地实现应用程序的参数配置和国际化。开发人员可以根据需要创建不同的配置文件,如 application-dev.propertiesapplication-prod.properties,并在应用程序中读取和使用这些配置信息。

参考链接:

Spring Boot Reference Documentation 

使用Properties - 廖雪峰的官方网站

你可能感兴趣的:(配置文件,前端,java,开发语言)