1.需求:有時候我們産品經理給我們的需求是會不斷變化的,例如數量是1000現在變成500,我們不可以去改代碼吧,這樣很麻煩,是以就可以改配置檔案properties(這個資料庫連結一樣),當然也有json格式的配置,我們暫不讨論
2.經曆:先看圖
(1)我之前以為直接在src建立system.properties然後
package cs.util;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;
/**
*
* @author JJ
*
*/
public class SetSystemProperty {
//屬性檔案的路徑
static String profilepath="src/system.properties";
/**
* 采用靜态方法
*/
private static Properties props = new Properties();
static {
try {
props.load(new FileInputStream(profilepath));
} catch (FileNotFoundException e) {
e.printStackTrace();
System.exit(-1);
} catch (IOException e) {
System.exit(-1);
}
}
/**
* 讀取屬性檔案中相應鍵的值
* @param key
* 主鍵
* @return String
*/
public static String getKeyValue(String key) {
return props.getProperty(key);
}
}
(2)做個測試
package cs.util;
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
SetSystemProperty property=new SetSystemProperty();
String name=property.getKeyValue("name");
System.out.println(name);
}
}
确實可以列印正确值,但是我部署到伺服器(tomcat)裡面就找不到配置檔案路徑,暈
3、解決方法
(1)配置檔案不變暫放在src下面,修改類
package cs.util;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
*
* @author JJ
*
*/
public class SetSystemProperty {
static Properties props;
public void GetDBConfigStr()
{
props = new Properties();
InputStream in;
try{
in=this.getClass().getResourceAsStream("/system.properties");
props.load(in);
}
catch(Exception e)
{
System.out.print(e.getMessage());
return ;
}
if(props.isEmpty())
{
return;
}
}
public String getValueByKey(String key)
{
return props.get(key).toString();
}
public SetSystemProperty() {
super();
GetDBConfigStr();
}
}
(2)在web項目中背景java的調用例子截圖
轉載于:https://www.cnblogs.com/imfjj/p/6001050.html