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项目,都是最佳的选择。

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