java中读取properties有哪些方式呢?

欣喜 Java经验 发布时间:2025-03-28 10:37:42 阅读数:2773 1
在日常开发中,我们通常将properties放入到指定位置,那么java程序如何读取配置文件呢?下文笔者将一一道来,如下所示

读取properties的实现思路

读取Properties的思路
   1.使用`java.util.Properties` 类:
      - 从文件系统或类路径读取。
      - 简单易用,适用于大多数场景。
   
   2.使用`java.util.ResourceBundle`类:
      - 适用于国际化和本地化。
      - 文件需要放在类路径下。
   
   3.使用 Java NIO:
      - 提供更现代的文件操作方式。
      - 适用于需要更高级文件操作的场景。
   
   4.使用 Apache Commons Configuration:
      - 功能强大,支持多种配置文件格式。
      - 需要添加额外的依赖。
   
   5.使用 Spring Framework:
      - 适用于使用 Spring 框架的应用。
      - 提供强大的配置管理功能

1.使用`java.util.Properties` 类

`java.util.Properties`类
  是Java 标准库中用于处理`properties`文件的类
1.从文件系统读取`properties`文件

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

public class PropertiesExample {
    public static void main(String[] args) {
        Properties properties = new Properties();
        try (FileInputStream fis = new FileInputStream("config.properties")) {
            properties.load(fis);
            String value = properties.getProperty("key");
            System.out.println("Value: " + value);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2.从类路径读取`properties` 文件

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class PropertiesExample {
    public static void main(String[] args) {
        Properties properties = new Properties();
        try (InputStream is = PropertiesExample.class.getClassLoader().getResourceAsStream("config.properties")) {
            if (is != null) {
                properties.load(is);
                String value = properties.getProperty("key");
                System.out.println("Value: " + value);
            } else {
                System.out.println("Properties file not found!");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2.使用`java.util.ResourceBundle` 类

`ResourceBundle` 类用于国际化和本地化
也可以用来读取 `properties` 文件。
基本用法
1.创建`properties`文件 

   假设有一个 `config.properties` 文件:
    key=value
  
2.使用`ResourceBundle`读取

import java.util.ResourceBundle;

public class ResourceBundleExample {
    public static void main(String[] args) {
        ResourceBundle bundle = ResourceBundle.getBundle("config");
        String value = bundle.getString("key");
        System.out.println("Value: " + value);
    }
}
注意事项:
	-`ResourceBundle`会自动查找`config.properties`文件
	   不需要指定文件扩展名
	-文件需要放在类路径下

3.使用`java.nio.file.Files`和 `java.nio.file.Paths`

  
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Properties;

public class NIOPropertiesExample {
    public static void main(String[] args) {
        Properties properties = new Properties();
        try {
            properties.load(Files.newInputStream(Paths.get("config.properties")));
            String value = properties.getProperty("key");
            System.out.println("Value: " + value);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

4.使用 Apache Commons Configuration

Apache Commons Configuration 是一个功能强大的库
   用于处理各种配置文件
    包括 `properties` 文件
添加依赖

如果你使用 Maven,可以在 `pom.xml` 中添加以下依赖:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-configuration2</artifactId>
    <version>2.8.0</version>
</dependency>
<dependency>
    <groupId>commons-beanutils</groupId>
    <artifactId>commons-beanutils</artifactId>
    <version>1.9.4</version>
</dependency>

基本用法

import org.apache.commons.configuration2.PropertiesConfiguration;
import org.apache.commons.configuration2.builder.fluent.Parameters;
import org.apache.commons.configuration2.ex.ConfigurationException;

public class CommonsConfigExample {
    public static void main(String[] args) {
        Parameters params = new Parameters();
        PropertiesConfiguration config = null;
        try {
            config = new PropertiesConfiguration.Builder("config.properties")
                    .configure(params.properties()
                            .setFileName("config.properties"))
                    .getConfiguration();
            String value = config.getString("key");
            System.out.println("Value: " + value);
        } catch (ConfigurationException e) {
            e.printStackTrace();
        }
    }
}

5.使用Spring Framework

使用Spring框架
 可利用Spring提供配置管理功能
 
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.3.20</version>
</dependency>
1.创建 `properties` 文件

   假设有一个 `config.properties` 文件
   key=value

2.使用 `@PropertySource`注解读取

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
@PropertySource("classpath:config.properties")
public class ConfigProperties {

    @Value("${key}")
    private String key;

    public String getKey() {
        return key;
    }
}

3.使用 `@Autowired` 注入配置

import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan(basePackages = "com.example")
public class AppConfig {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
        ConfigProperties configProperties = context.getBean(ConfigProperties.class);
        System.out.println("Value: " + configProperties.getKey());
        context.close();
    }
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202503/17431294968410.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者