六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 40|回复: 0

Spring CallBack回调机制介绍

[复制链接]

升级  55.67%

109

主题

109

主题

109

主题

举人

Rank: 3Rank: 3

积分
367
 楼主| 发表于 2013-1-26 12:44:32 | 显示全部楼层 |阅读模式
所谓回调,就是客户程序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() {@Overridepublic String findGirlFirendForBoyMan() {return "张三";}});String girls = anotherBoyman.doGirlFriendCallback();System.out.println("此男孩的女朋友:" + girls);}} 

5 运行结果如下



原先的女朋友:李四!
此男孩的女朋友:张三
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表