zoukankan      html  css  js  c++  java
  • Spring读取properties文件却总是读取到系统变量值

    1.问题描述

    1.1 PropertySourcesPlaceholderConfigurer的bug

    今天在配置spring读取properties文件时,遇到奇葩问题

    1. 首先我采用了网上的 PropertyPlaceholderConfigurer进行读取properties文件是能够正常进行读取的,而且可以运行,配置如下:

      db.properties文件:

      image-20200925100332713

      spring配置文件如下:只贴上了关键部分

      <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
          <property name="locations">
              <list>
                  <value>classpath:db.properties</value>
              </list>
          </property>
      </bean>
      
      。。。。
      <bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
              <property name="driverClassName" value="${driver}"/>
              <property name="url"
                        value="${url}"/>
              <property name="username" value="${username}"/>
              <property name="password" value="${password}"/>
          </bean>
      
      

      但是使用PropertyPlaceholderConfigurer会提示已经被弃用,于是我去网上查找了其他的替代,发现现在使用的是 PropertySourcesPlaceholderConfigurer,然后改用这个之后就出现错误了

    2. 使用 PropertySourcesPlaceholderConfigurer配置如下:

      <bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
          <property name="location" value="db.properties"/>
      </bean>
      
      Caused by: java.sql.SQLException: Access denied for user 'wanglin'@'localhost' (using password: YES)
      Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Access denied for user 'wanglin'@'localhost' (using password: YES)
      

      这个错误我就很好奇,我明明使用的是root账户,怎么会连接数据库时是wanglin这个我win10系统的账户呢

    2. 解决过程

    开始Google了很多,但是就是没有找到对应的解决方案,因为大多数网上还是使用的是废弃的PropertyPlaceholderConfigurer的教程,关于这个的很少,虽然网上说这两种方式使用几乎一样,但是这次我却一直被这种奇怪的错误困扰。

    2.1 分析

    后来仔细分析了下原因,怀疑是配置文件中的username的问题,和系统的重名了,导致读取到了当前系统的账户名。于是我将db.properties中的关于账户的键改成了 usernameL,果然解决了问题,程序能够正常的运行了。

    3. 总结

    最终的原因竟然是配置文件中username的原因,可能和spring中的相关名称冲突了,奇怪的知识增加了,暂时不知道具体的原因,只是找到了解决方法。

    image-20200925100332713

    将图片中的username改成其他不同于username的键应该就解决了问题

    保持对优秀的热情
  • 相关阅读:
    Cookie:Session,ServletContext
    thrift安装笔记
    Maven笔记
    JVM 几个重要的参数
    dbvisualizer参数设置
    Linux中如何设置java环境变量
    java.net.NoRouteToHostException: No route to host
    新上海滩感想
    也许你的种子永远不会开花,因为他是一棵参天大树
    男子给妻子做了张桌子,他病逝后家人偶然发现...
  • 原文地址:https://www.cnblogs.com/luckforefforts/p/13728591.html
Copyright © 2011-2022 走看看