在javaweb中使用Druid连接池

今天在javaweb中尝试用druid来链接数据库,遇到了无法加载druid.properties的问题

这是我在DruidUtil的原代码:

Properties properties = new Properties();
properties.load(new FileInputStream("src\\druid.properties"));

加载文件时出现文件没有找到的异常,(java.io.FileNotFoundException: src\jdbc.properties (系统找不到指定的路径。)

经查阅,发现Javaweb项目在部署时会将src目录下的文件自动部署到classes目录下的(结构如下图)。而我们使用上述代码运行时,会去src目录下找jdbc.properties,而我们classes目录下并没有这个目录,所以会出现FileNotFoundException。

 

 解决方法:

我们使用类加载器来获取到该文件的输入流。

InputStream inputStream = JdbcUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
properties.load(inputStream);

  

上述代码的解析:

1、JdbcUtils.class.getClassLoader()是获取当前类的类加载器。类加载器的大概作用是当需要使用一个类时,加载该类的".class"文件,并创建对应的class对象,将class文件加载到虚拟机的内存。

2、getResourceAsStream()是获取资源的输入流。类加载器默认是从classPath路径加载资源。

classPath目录:web项目运行时,IDE编译器会把src下的一些资源文件移至WEB-INF/classes,classes目录就是classPath目录。该目录放的一般是web项目运行时的class文件、资源文件(xml,properties等)

posted @ 2022-12-15 23:12  远子小姐  阅读(229)  评论(0)    收藏  举报