Java Spring MethodInvokingBean-DriverManager数据源不接受返回的值
我试着在谷歌上搜索这个问题,但没有找到解决方案 我正在努力实现的目标 请看下面的代码,我正在尝试将加密密码传递给Java Spring MethodInvokingBean-DriverManager数据源不接受返回的值,java,spring,Java,Spring,我试着在谷歌上搜索这个问题,但没有找到解决方案 我正在努力实现的目标 请看下面的代码,我正在尝试将加密密码传递给MethodInvokingBean,它使用com.xxxxxxx.CryptoUtil进行解密是使用静态方法解密 解密后的值通过注入到masterDBDatasource中,但它不起作用 <bean id="decryptedDBPassword" class="org.springframework.beans.factory.config.MethodInvokingBea
MethodInvokingBean
,它使用com.xxxxxxx.CryptoUtil
进行解密是使用静态方法解密
解密后的值通过
注入到masterDBDatasource
中,但它不起作用
<bean id="decryptedDBPassword" class="org.springframework.beans.factory.config.MethodInvokingBean">
<property name="targetClass" value="com.xxxxxxx.CryptoUtil"/>
<property name="targetMethod" value="decrypt"/>
<property name="arguments" value="${encrypted.db.password}" />
</bean>
<bean id="masterDBDatasource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${db.driver.class}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" ref="decryptedDBPassword" />
</bean>
我遵循下面的教程作为参考
我也试过
但是数据库连接显示-由于密码无效,访问被拒绝
请提供帮助。属性
密码
应为字符串值。您正在将一个bean(decryptedPassword
)引用传递给需要字符串作为密码的DriverManager数据源。应该是
<property name="password" value="${db.password} />
属性密码
应为字符串值。您正在将一个bean(decryptedPassword
)引用传递给需要字符串作为密码的DriverManager数据源。应该是
<property name="password" value="${db.password} />
发布我的问题代码的确切答案,作为其他可能面临类似问题的人的参考
根据@Matt的提示,我使用SPeL(不使用MethodInvokingBean
)进行了如下最终配置
发布我的问题代码的确切答案,作为其他可能面临类似问题的人的参考
根据@Matt的提示,我使用SPeL(不使用MethodInvokingBean
)进行了如下最终配置
<bean id="masterDBDatasource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${db.driver.class}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value='#{T(com.xxxxxxx.CryptoUtil).decrypt("${encrypted.db.password}")}' />
</bean>