在另一个类中访问config.properties文件

时间:2018-07-27 05:45:40

标签: java properties

我在resources文件夹中的config.properties文件中具有特定于环境的属性的列表。然后,我有一个名为GetDatabase.java的单独的类,我想从配置文件中获取值。文件结构如下。

├───main
│   ├───java
│   └───resources
│
└───test
    ├───java
    │   ├───Database
    │          GetDatabase.java
    │
    └───Resources
        │
        ├───resources
               config.properties

我的配置文件条目如下:

dev1URL=https://mos-dev.1.com
dev2URL=https://mos-dev.2.com
dev3URL=https://mos-dev.3.com

在我的GetDatabase类中,我已经使用getProperty方法编写了一些代码来调用属性文件,但是它返回的是null。我在这里想念东西吗?

下面是GetDatabase类:

package Database;

import java.sql.*;
import java.util.Properties;

public class GetDatabase {

{
    final ClassLoader loader = getClass().getClassLoader();
    try {
        try (InputStream config = loader.getResourceAsStream("config.properties")) {
            properties.load(config);

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

    public ResultSet runQuery(String strQuery) throws SQLException {

        String driver = properties.getProperty("dev1URL");
        System.out.println("db driver string is here " + driver);

2 个答案:

答案 0 :(得分:1)

您可以将属性加载到实例初始化程序块中:

public class GetDatabase {
    private final Properties properties = new Properties();
    {
        final ClassLoader loader = getClass().getClassLoader();
        try(InputStream config = loader.getResourceAsStream("config.properties")){
            properties.load(config);
        } catch(IOException e){
            throw new IOError(e);
        }
    }

    // The rest of your code
}

答案 1 :(得分:-1)

您是否尝试过以下类路径文件:

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

public class App {

  public static void main( String[] args ){

        Properties prop = new Properties();
        InputStream input = null;

        try {

            String filename = "config.properties";
            input = App.class.getClassLoader().getResourceAsStream(filename);
            if(input==null){
                    System.out.println("Sorry, unable to find " + filename);
                return;
            }

            //load a properties file from class path, inside static method
            prop.load(input);

                //get the property value and print it out
                System.out.println(prop.getProperty("database"));
                System.out.println(prop.getProperty("dbuser"));
                System.out.println(prop.getProperty("dbpassword"));

        } catch (IOException ex) {
            ex.printStackTrace();
        } finally{
            if(input!=null){
                try {
                input.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            }
        }

    }
}

来源:java-properties-file-examples