在Bean属性中调用方法

时间:2013-09-11 10:19:17

标签: java

我在bean xml文件中有一个简单的bean标记,如下所示。这只是一个虚拟值

<bean id="myBeanId" class="myBeanClass">
    <property name="myProperty" value=${myPassword} />
</bean>

<bean id ="myOtherBeanId" class="myOtherBeanClass">
    <property name="myOtherProperty" ref="myBeanId">
</bean>

myPassword是存储在单独属性文件中的变量名。现在,我不是从属性文件中存储myPassword的直接值,而是在属性文件中有加密字符串,我想在myPassword属性上调用我自定义的写入Decrypt方法。像这样的东西。

<bean id="myBeanId" class="myBeanClass">
    <property name="myProperty" value=com.xxx.Security.Decrypt(${myPassword}) />
</bean>

我该怎么做?

2 个答案:

答案 0 :(得分:1)

如果要调用另一个bean的方法并将返回的对象用作bean,请使用MethodInvokingFactoryBean。

<bean id="securityBean" class="com.xxx.Security">
</bean>

<bean id="myBeanId" class="myBeanClass">
    <property name="myProperty">
        <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
           <property name="targetObject"><ref local="securityBean"/></property>
           <property name="targetMethod"><value>Decrypt</value></property>
           <property name="arguments">
               <list>
               <value>${myPassword}</value>
              </list>
            </property>
        </bean>
    </property>
</bean>

答案 1 :(得分:0)

如何使用jaspyt

属性文件条目     密码= ENC(G6N718UuyPE5bHyWKyuLQSm02auQPUtm)

Bean Entry

<bean id="myBeanId" class="myBeanClass">
    <property name="myProperty" value=${password} />
</bean>

来源:http://www.jasypt.org/spring31.html