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>