ssm连接mysql引入外部配置文件username无法被正确解析
问题:
今天在整合SSM的时候,为了配置更加灵活,准备在外部写个db.properties来引入四大配置,如下
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC
username=root
password=root
然后在内部引入这个文件
<context:property-placeholder location="classpath:db.properties"/>
<!--数据源-->
<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>
问题出现了,在没有外部资源引入的情况下,项目运行正常,但这样一番操作后,项目报如下错误
Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Access denied for user ‘é½�è��è��’@‘localhost’ (using password: YES)
一开始没有发现猫腻,换了无数次mysql的驱动版本,最后发现properties里面的username只需要换个名字即可,因为username=root,会被解析成电脑的账户名字(一串乱码,当时也很懵逼),真是坑啊,也怪我经验不足。
解决:
db.username=root
<property name="username" value="${db.username}"/>
只需要换这一个即可。