通过MethodInvokingFactoryBean获取某个类方法的返回值

我们有时候定义了一个bean,bean中的某个属性是另外一个bean的某个方法的返回值,这个时候我能就能用org.springframework.beans.factory.config.MethodInvokingFactoryBean这个工厂bean直接把那个返回值注入到那个属性当中去,网上有一些关于MethodInvokingFactoryBean的博文,但是例子里的方法都是没有参数的,我下面说如何配置调用有参的方法,很简单只需要配置arguments这个属性,废话不说,上例子

 

package com.spring.methodinvokingfactorybean;

public class Order {
	private String usdAmount;
	private String cnyAmount;

	public String getUsdAmount() {
		return usdAmount;
	}

	public void setUsdAmount(String usdAmount) {
		this.usdAmount = usdAmount;
	}

	public String getCnyAmount() {
		return cnyAmount;
	}

	public void setCnyAmount(String cnyAmount) {
		this.cnyAmount = cnyAmount;
	}

	@Override
	public String toString() {
		return "Order [usdAmount=" + usdAmount + ", cnyAmount=" + cnyAmount
				+ "]";
	}

}

package com.spring.methodinvokingfactorybean;

public class AmountUtils {
	public String getAmount(String currency) {
		return 100 + currency;
	}
}

package com.spring.methodinvokingfactorybean;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {
public static void main(String[] args) {
	ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");
	 Order order = (Order) ctx.getBean("order");  
     System.out.println(order); 
}
}



 

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xmlns:p="http://www.springframework.org/schema/p"
		xmlns:context="http://www.springframework.org/schema/context" 
		xsi:schemaLocation="
			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
			http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

	<bean id="order" class="com.spring.methodinvokingfactorybean.Order">
        <property name="usdAmount" ref="usdAmountUtils" />
        <property name="cnyAmount" ref="cnyAmountUtils" />
    </bean>
	
	<bean id="getAmountUtils" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" abstract="true">
        <property name="targetObject" ref="amountUtils"/>
        <property name="targetMethod" value="getAmount"/>
    </bean>
	
    <bean id="usdAmountUtils" parent="getAmountUtils">
        <property name="arguments">
            <list>
                <value>USD</value>
            </list>
        </property>
    </bean>
	
    <bean id="cnyAmountUtils" parent="getAmountUtils">
        <property name="arguments">
            <list>
                <value>CNY</value>
            </list>
        </property>
    </bean>
	
	<bean id="amountUtils" class="com.spring.methodinvokingfactorybean.AmountUtils" />

</beans>

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值