`
snowboy886
  • 浏览: 36787 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

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

    博客分类:
  • java
阅读更多

我们有时候定义了一个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>

 

 

 

 

 

分享到:
评论

相关推荐

    python使用threading获取线程函数返回值的实现方法

    总结起来,Python的`threading`模块虽然不直接支持获取线程函数的返回值,但通过自定义线程类和辅助方法,我们可以实现类似的功能。这种实现方式可以用于监控并行任务的状态,从而更好地控制和管理多线程程序的执行...

    执行外部exe获取返回值

    在IT领域,执行外部exe(可执行文件)并获取返回值是常见的系统...通过以上技术,开发者可以灵活地控制外部exe的执行并获取其返回值,实现不同程序间的协作和数据交换。在实际项目中,应根据具体需求选择合适的方法。

    android webview中使用Java调用JavaScript方法并获取返回值

    总结一下,从Android WebView调用JavaScript方法并获取返回值的关键步骤包括: 1. 启用WebView组件的JavaScript支持。 2. 使用addJavascriptInterface()方法建立Java和JavaScript之间的通信桥梁。 3. 在Java类中...

    获取所有委托返回值

    "获取所有委托返回值"这个主题涉及到如何在委托链中收集并处理每个委托方法的返回结果。 在标准的委托调用中,如果一个委托实例绑定了多个方法,执行委托时只会返回最后一个方法的返回值。这是因为委托本质上是一个...

    C#WinForm获取子窗口返回值

    总之,C# WinForm中获取子窗口返回值的关键在于正确地设置和检查子窗口的`DialogResult`属性,以及通过适当的方式(如属性或事件)传递结果。同时,处理用户取消操作也是必不可少的,这通常通过设置`DialogResult`为...

    asp.net 请求url 获取返回值

    在ASP.NET中,请求URL获取返回值是网络编程的一个常见任务,主要涉及到Web请求和数据交互。本篇文章将深入探讨如何使用`WebRequest`和`WebClient`这两种方式来实现这一功能。 首先,让我们理解`WebRequest`类。它是...

    Spring实战之获取方法返回值操作示例

    在获取方法返回值方面,Spring 提供了多种方式,例如使用 MethodInvokingFactoryBean 来驱动 Spring 调用普通方法。在下面的配置文件中,我们使用 MethodInvokingFactoryBean 来调用 JFrame 对象的 add 方法: ``` ...

    Java程序设计基础:一维数组应用数组作为方法返回值类型.pptx

    数组作为方法返回值类型 学习目标 1 理解方法返回值类型是数组 引用类型的方法签名; 2 理解并学会数组作为方法返 回值类型的方法编写; 3 理解并熟知数组作为返回值 类型的方法调用。 方法的返回值类型 方法的...

    ios通过HTTP调用获取返回值

    本文将探讨如何在iOS应用中通过HTTP调用来获取返回值,包括GET和POST两种方法。 首先,我们来看一个简单的GET请求的例子,这个例子展示了如何从服务器获取JSON数据。在示例代码中,`getOutputImagesData:` 方法用于...

    获取(设置)应用程序返回值

    总结来说,程序返回值是衡量程序执行状态和结果的重要指标,通过适当的获取和设置方法,我们可以有效地调试代码,编写测试用例,以及优化程序的交互。理解如何在不同的编程语言和环境下操作返回值是每个开发者必备的...

    Java的方法和返回值.doc

    这类方法虽然没有返回值,但可以通过`System.out.println()`或其他输出方式提供信息。例如,`MaxDemo`类的`max()`方法用于找到两个数中的最大值。它接收两个浮点数作为参数,通过条件判断找出最大值,并将其打印出来...

    方法的返回值类型如何定义.xmind

    方法的返回值类型如何定义

    JAVA反射机制详解视频

    (通过反射获取无参无返回值成员方法并使用) (通过反射获取带参带返回值成员方法并使用) (通过反射运行配置文件内容) (通过反射越过泛型检查) (通过反射写一个通用的设置某个对象的某个属性为指定的值) (通过用户的增...

    delphi与JavaScript进行交互,获取JS端返回值

    在IT领域,跨语言交互是常见的需求之一,特别是在桌面应用(如Delphi开发的应用)与...通过理解并实践上述步骤,你可以掌握在Delphi中调用JavaScript并获取返回值的核心技术,从而提升你的应用程序的交互性和功能性。

    测试android sqlite insert and delete 方法的返回值

    验证android sqlite数据库insert 和delete 方法返回值的具体规律 insert 插入一行,如果当前最大id是4,insert新的一条记录id是5 ,如果把5删除, 在insert一条新的记录id还是5,如果删除的是id为4的记录, 再新增一...

    一种获取tkinter子窗口返回值的方法

    最后通过仔细阅读几篇文章和自己摸索,找到了一种使用传递引用的解决方案。 该方法主要是使用python的list完成子窗口的值返回,因为list作为函数参数传入时,传递的是list对象的地址,所以子窗口对参数`list`的修改...

    C++多线程获取返回值方法详解

    C++多线程获取返回值方法详解 在C++多线程编程中,获取线程返回值是一个很重要的 topic。在C++11标准中,std::thread对象会忽略顶层函数的返回值,这就使得获取线程返回值变得困难。下面我们将详细介绍两种获取...

    js弹窗并返回值(window.open方式)

    通过合理的事件监听和通信机制,我们可以在弹出窗口中执行操作并获取返回值,增强了Web应用的交互性和用户体验。在实际开发中,根据具体需求,可以选择合适的通信策略来实现弹窗与原窗口的双向数据交换。

    asp获取子窗体返回值

    "asp获取子窗体返回值"这一主题就是关于如何在父窗口中获取子窗口执行后产生的结果,并利用这些返回值来更新父窗口的部分内容。以下是对这个知识点的详细讲解: 首先,我们需要理解ASP的基本概念。ASP是一种由微软...

    asp.net 请求url,获取返回值

    要使用`WebRequest`请求远程URL,首先需要实例化`HttpWebRequest`子类,然后设置相关属性,如URL、请求方法(GET或POST),最后通过`GetResponse`方法发送请求并获取响应。 ```csharp WebRequest request = ...

Global site tag (gtag.js) - Google Analytics