Spring CallBack回调机制介绍

所谓回 调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。例如Win32下 的窗口过程函数就是一个典型的回调函数。一般说来,C不会自己调用B,C提供B的目的就是让S来调用它,而且是C不得不提供。由于S并不知道C提供的B姓 甚名谁,所以S会约定B的接口规范(函数原型),然后由C提前通过S的一个函数R告诉S自己将要使用B函数,这个过程称为回调函数的注册,R称为注册函 数。Web Service以及Java 的RMI都用到回调机制,可以访问远程服务器程序。


而在spring当中大量使用了回调机制,我们不得不对内部的实现机制进行一定的了解与认识,我们先从简单点入手。

在现实生活当中常常会发生对一个男孩子来说,会存在着不同的女朋友,那么怎么样去更换他呢,基本可以通过回调来实现。

1 回调类接口

 

package com.japie.callback;

/**
 * 
 * @author Japie
 * 
 */
public interface IFindGirlFirendBack {
	public String findGirlFirendForBoyMan();
}
 


2 具体实现类

package com.japie.callback;

/**
 * 
 * @author Japie
 * 
 */
public class FindGirlFriendCallbackFunction implements IFindGirlFirendBack {

	/**
	 * 
	 */
	public FindGirlFriendCallbackFunction() {
	}

	public String findGirlFirendForBoyMan() {
		return "李四!";
	}

}
 


3 调用者

package com.japie.callback;

/**
 * 
 * @author Japie
 * 
 */
public class AnotherBoyman {

	IFindGirlFirendBack findGrilFirendBack;

	public String doGirlFriendCallback() {
		return findGrilFirendBack.findGirlFirendForBoyMan();
	}

	public void setCallback(IFindGirlFirendBack findGrilFirendBack) {
		this.findGrilFirendBack = findGrilFirendBack;
	}
}
 

4 具体实现回调测试

 

 

package com.japie.callback;

public class CallMainTest {

	public CallMainTest() {
	}

	public static void main(String[] args) {

		IFindGirlFirendBack first = new FindGirlFriendCallbackFunction();
		System.out.println("原先的女朋友:" + first.findGirlFirendForBoyMan());
		AnotherBoyman anotherBoyman = new AnotherBoyman();
		anotherBoyman.setCallback(new FindGirlFriendCallbackFunction() {
			@Override
			public String findGirlFirendForBoyMan() {
				return "张三";
			}
		});
		String girls = anotherBoyman.doGirlFriendCallback();
		System.out.println("此男孩的女朋友:" + girls);
	}

}
 


5 运行结果如下


原先的女朋友:李四!
此男孩的女朋友:张三

猜你喜欢

转载自cjjwzs.iteye.com/blog/1095622