gpt4 book ai didi

java - Spring MethodInvokingBean - DriverManagerDataSource 不接受返回的值

转载 作者:行者123 更新时间:2023-12-01 21:23:43 25 4
gpt4 key购买 nike

我尝试在谷歌上查找该问题,但无法找到解决方案。

我想要实现的目标

请参阅下面的代码,我想做的是将加密密码传递给 MethodInvokingBean ,它使用 com.xxxxxxx.CryptoUtil解密使用静态方法 decrypt .

解密后的值被注入(inject)masterDBDatasource通过<property name="password" ref="decryptedDBPassword" /> ,但它不起作用。

<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>

异常

org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'org.springframework.beans.factory.config.MethodInvokingBean' to required type 'java.lang.String' for property 'password'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [org.springframework.beans.factory.config.MethodInvokingBean] to required type [java.lang.String] for property 'password': no matching editors or conversion strategy found

我按照以下教程作为引用

https://www.mkyong.com/spring/spring-methodinvokingfactorybean-example/

我也尝试过<property name="password" value="decryptedDBPassword" />但数据库连接说 - 由于密码无效,访问被拒绝。

请帮忙。

最佳答案

发布我的问题代码的确切答案,作为可能面临类似问题的其他人的引用。

根据@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>

关于java - Spring MethodInvokingBean - DriverManagerDataSource 不接受返回的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38690609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com