我在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);
答案 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();
}
}
}
}
}