Spring中配置jdbc中使用$出现的一些问题

在Spring中配置jdbc数据源时遇到问题,错误信息显示用户'Admin'@'localhost'访问被拒绝。问题源于系统尝试将电脑名作为数据库用户名。通过检查发现<context:property-placeholder>标签缺少system-properties-mode="FALLBACK"属性,导致系统从环境变量中读取配置,而非配置文件。添加该属性后,问题解决,成功连接数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题1,之配置数据源:

Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Access denied for user ‘Admin’@‘localhost’ (using password: YES))
翻译:
错误查询数据库。原因:org.springframework.jdbc。无法获得JDBC连接;嵌套异常是org.apache.commons.dbcp.SQLNestedException:无法创建PoolableConnectionFactory(用户“Admin”@“localhost”访问被拒绝(使用密码:YES))
问题发现:Admin,是我的电脑名,想到为什么会读我的电脑名的名字

错误示例:

  • database.properties

    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/test?characterEncoding=utf-8
    username=root
    password=123456
    
  • applicationContext.xml

    <!-- 导入数据源的配置信息 -->
    <context:property-placeholder location="classpath:database.properties"/>
    <!-- 配置数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    	<!-- 错误点在value使用${}中 -->
    	<property name="driverClassName" value="${driver}"/>
    	<property name="url" value="${url}"/>
    	<property name="username" value="${username}"/>
    	<property name="password" value="${password}"/>
    </bean>
    

解决方案:后来检查发现,在加载读取配置文件的标签中<context:property-placeholder location=“classpath:dataSource.properties” /> 少了一条属性system-properties-mode=“FALLBACK”,
系统默认为system-properties-mode=“ENVIRONMENT” 意思就是从系统环境中去读取,把电脑名当做mysql的用户名,修改之后,运行成功。

<context:property-placeholder location="classpath:db.properties" system-properties-mode="FALLBACK" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值