java 加載db.properties配置文件時,找不到路徑

關於java加載數據庫配置文件db.properties中的一些問題

在日常項目開發中,爲方便項目後期維護,在建立連接池,連接數據庫時,一般都不會將數據庫的基本配置driverClassNameurlusernamepassword等信息直接寫進DbUtils類中(建立數據庫連接的一個工具類),而是通過xxx.properties配置文件的形式進行配置,然後由DbUtils類加載並讀取該配置文件。該配置文件是以key-value的形式存放數據庫配置信息,如下代碼就是db.properties文件的基本形式;

#數據庫基本信息配置

driverClassName=org.postgresql.Driver

url=jdbc:postgresql://127.0.0.1:5432/testdb

username=postgres

password=123456

 

#連接池性能配置

filters=stat

initialSize=2

maxActive=300

maxWait=60000

timeBetweenEvictionRunsMillis=60000

minEvictableIdleTimeMillis=300000

validationQuery=SELECT 1

testWhileIdle=true

testOnBorrow=false

testOnReturn=false

poolPreparedStatements=false

maxPoolPreparedStatementPerConnectionSize=200

 

      加載db.properties文件的基本操作如下代碼所示:

//創建配置文件

   private static Properties p = new Properties();

   //加載配置文件並建立連接池

   static{

      try{

          //FileInputStream in = new FileInputStream("src/pdb.properties"); (方式1,路徑爲絕對路徑)

          InputStream in = DbUtil.class.getResourceAsStream("/pdb.properties");方式2,採用相對路徑)

          p.load(in);

          ds = DruidDataSourceFactory.createDataSource(p);//創建連接池

      }catch(Exception e){

          e.printStackTrace();

      }

   }

方式1,路徑爲絕對路徑:

FileInputStream in = new FileInputStream("src/pdb.properties");

 

方式2,採用相對路徑;

InputStream in = DbUtil.class.getResourceAsStream("/pdb.properties");

 

如果在java項目中使用方式1加載配置文件到不會有什麼問題,只要將配置文件放在src目錄下,項目編譯時,會將配置文件放到bin目錄中,運行時能找到配置文件的路徑,因爲在java項目中,classpath的根目錄就是bin目錄。

 如果在java web項目中,使用方式1進行加載,就會在運行時出現問題,因爲在web項目中,classpath的根目錄是WEB-INF/classes,通過方式1加載配置文件時,路徑採用了絕對路徑,所以導致web項目在運行時tomcat容器找不到配置文件的路徑,所以會拋錯。此時最好的解決辦法就是使用方式2加載配置文件,通過反射找到配置文件的路徑。採用相對路徑不管在java項目還是java web項目,都是最佳的選擇。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章