哎,我也是醉了,druid的username,在spring配置中为什么不能用${username}?

李嘉图 发布于 2015/05/03 15:11
阅读 6K+
收藏 3

我在怀疑,这么小概率事件的东东,为什么被我碰见了?

druid的username属性,配置的时候,我写在了druidDataSource.properties里面,username=root,在spring配置文件中,配置了com.alibaba.druid.pool.DruidDataSource这个bean,引用了${username},后来测试总是报java.sql.SQLException: Access denied for user 'Dragon'@'localhost' (using password: YES)

其中Dragon是我的用户名,就是电脑的用户名,后来我百思不得其解,无意中把username统一换成了user-name,竟然成功了,后来我又试了,除了不能用${username},好像在spring配置中这个com.alibaba.druid.pool.DruidDataSource的username属性用任何名字引用都可以.

我真是醉了,来给大家分享一下,看看你们有什么神奇的简洁没有,好了,我先去吃饭了,改了一中午bug了.

java的确是神奇的.

加载中
0
逝水fox
逝水fox
By default it also checks against the Java System properties if it cannot find a property in the specified properties files.
我觉得这纯属是读文档不认真
0
李嘉图
李嘉图

引用来自“逝水fox”的评论

By default it also checks against the Java System properties if it cannot find a property in the specified properties files.
我觉得这纯属是读文档不认真
为什么名字起成username就找不到了?去找默认的属性去了?你可不可以把话说明白?
0
逝水fox
逝水fox

估计你是用的 <context:property-placeholder>而system-properties-mode没有设置用了默认的"ENVIRONMENT",改成"FALLBACK"即可

具体内容自己看文档和配置xsd的说明吧

0
李嘉图
李嘉图

引用来自“逝水fox”的评论

估计你是用的 <context:property-placeholder>而system-properties-mode没有设置用了默认的"ENVIRONMENT",改成"FALLBACK"即可

具体内容自己看文档和配置xsd的说明吧

谢谢你,我就是用了<context:property-placeholder>,那个也是使用默认的,没有配置.好的,我回去多查查资料,好好看看.
0
李嘉图
李嘉图

引用来自“逝水fox”的评论

估计你是用的 <context:property-placeholder>而system-properties-mode没有设置用了默认的"ENVIRONMENT",改成"FALLBACK"即可

具体内容自己看文档和配置xsd的说明吧

就是的,那个<context:property-placeholder>没有那么想想的简单,它有个属性是 system-properties-mode,默认是environment,就是先找系统属性,再找location文件里面的属性,所以这也解释为什么是Dragon,我电脑的用户名了.谢谢你了,我太孤陋寡闻了.
0
Z
Zempty

牛逼喔,我也是发现用了${username}它用当前计算机用户名来连数据库,刚开始我以为占位符解析不了。后面改了${username}发现可以连了,我就觉得${username}一定是取得环境变量的值,但不知道原理。感谢楼上一些大神让我知道了关于这点在文档中的解释!

CCDDDAAA
CCDDDAAA
spring 4.3.1 ${user}被当成计算机用户名了,整了一个晚上.....
0
重毛名
重毛名

感谢你啊老哥,我刚也遇到这个问题

0
Fnms
Fnms

终于找到问题了 感谢

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部