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的調用例子截圖

