`

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 运行结果如下


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

分享到:
评论
1 楼 HkEndless 2015-01-19  
不好意思,请问这确定是回调机制吗。你的例子中只是将接口的实现类作为一个引用传入AnotherBoyman ,通过内部匿名类的方式创建了一个新的对象而已。而AnotherBoyman与另外一个上层类IFindGirlFirendBack first = new FindGirlFriendCallbackFunction();  中的first并没有直接关系。我觉得这不是回调机制。

相关推荐

    59丨模板模式(下):模板模式与Callback回调函数有何区别和联系?1

    例如,Spring框架中的`JdbcTemplate`虽然名字中含有“Template”,但它其实主要依赖于回调机制。`JdbcTemplate`执行SQL查询时,会调用用户提供的回调方法来处理结果集,这类似于同步回调,因为结果处理在查询完成后...

    浅谈JAVA回调机制1

    在Spring框架中,回调机制常用于拦截器(Interceptor)和AOP(面向切面编程),允许在方法调用前后插入自定义逻辑。此外,回调还可以用于线程间的通信,例如在多线程编程中,一个线程完成特定任务后通知另一个线程...

    oss文件上传(带回调)

    【标题】"OSS文件上传(带回调)"指的是在Spring Boot应用中集成对象存储服务(Object Storage Service,简称OSS),并实现文件上传功能,同时具备回调机制,即在文件上传完成后,系统会自动执行预设的回调函数,通常...

    java自定义回调函数

    在Java中,我们可以使用接口或者匿名内部类来实现回调机制。 首先,我们需要理解什么是回调。回调是一种编程技术,当一个函数执行完毕后,它会调用另一个预先指定的函数,这个被调用的函数就是回调函数。在Java中,...

    spring、ioc、aop、callback

    Spring 框架是 Java 开发中的一个核心组件,它为开发者提供了丰富的功能,包括依赖注入(IOC)、面向切面编程(AOP)以及回调机制。让我们深入了解一下这些概念。 **Spring IOC(Inversion of Control,控制反转)*...

    微信企业号回调模式实例(Java版)

    在微信企业号的应用开发中,回调模式是一种关键的交互机制,它使得企业号可以与外部系统进行实时的数据同步和通信。本实例将聚焦于Java版本的实现,通过深入理解回调模式,我们可以更好地构建稳定、高效的微信企业号...

    微信支付-商户支付模式一url接口回调-java版

    可以使用Spring MVC的`@RequestMapping`注解来定义处理回调的HTTP方法。 ```java @RestController public class WeChatPayCallbackController { @PostMapping("/wechat/pay/callback") public String ...

    springboot基于spring-retry实现重试机制

    本文将详细探讨如何在 Spring Boot 应用中基于 Spring Retry 实现重试机制,以及如何将其应用于支付回调和自定义重试场景。 首先,让我们了解 Spring Retry 的核心概念。Spring Retry 提供了一个 `@Retryable` 注解...

    说明Java的传递与回调机制的代码示例分享

    回调机制是Java编程中常见的一种设计模式,尤其在Spring框架中广泛运用。回调机制允许一个对象在被调用时反过来调用调用者的方法。简单来说,就是“如果你调用我,我也会调用你”。这种机制通常通过接口实现,接口...

    Spring源代码解析(三):Spring_JDBC.doc

    总的来说,Spring JDBC的JdbcTemplate是Spring框架中用于数据库操作的关键组件,通过回调接口和模板方法设计,它极大地简化了数据库访问的代码,同时也提供了良好的异常处理和资源管理机制。理解和掌握JdbcTemplate...

    简单模拟spring cglib代理

    要进行模拟,首先需要了解CGLIB代理的核心实现原理,包括代理类的生成、方法拦截和回调机制等。 1. 代理类的生成 CGLIB使用Enhancer类来生成代理对象。Enhancer的工作原理是对指定的目标类进行字节码增强,并创建该...

    SpringMvc微信支付回调示例代码

    在微信支付的过程中,回调函数(Callback)扮演着关键的角色,它是微信支付系统与商户服务器进行交互的桥梁...在实际开发中,可以根据项目需求和微信支付的文档来调整和优化代码,以实现更加健壮和安全的回调处理机制。

    死磕Spring之AOP篇 - Spring AOP两种代理对象的拦截处理(csdn)————程序.pdf

    `Enhancer` 是 CGLIB 的核心类,用于创建代理对象,而 `Callback` 是一个回调接口,它定义了代理对象在方法调用时需要执行的操作。在 Spring AOP 中,`ObjenesisCglibAopProxy` 类负责使用 CGLIB 创建代理对象,它会...

    详解如何在低版本的Spring中快速实现类似自动配置的功能

    1. **Lifecycle Callback**:包括初始化和销毁回调。可以通过实现InitializingBean接口、使用@PostConstruct注解、指定init-method,以及实现DisposableBean接口、使用@PreDestroy注解、指定destroy-method来分别...

    JAAs验证机制.doc

    描述:Java认证和授权服务(JAAS)供应器JAAs验证机制,探讨了Spring Security如何代理JAAS的认证请求,并详细介绍了JAAS登录配置文件、JaasAuthenticationProvider的配置以及JAAS Callback Handler和JAAS Authority...

    Spring JdbcTemplate api

    在`JdbcTemplate`的设计中,模板(Template)承担着事物控制、资源管理和异常处理的责任,而回调(Callback)则专注于实现应用程序特有的逻辑,如创建SQL语句、设置参数和处理结果集。这种分离使得开发者能够更专注...

    DWR结合spring例子(可用)

    例如,`new DWREngine().execute('UserService.addUser', params, callback)`,其中`addUser`是服务器端`UserService`类的一个方法,`params`是传递的参数,`callback`是回调函数,用来处理服务器返回的结果。...

    Spring源代码解析3:SpringJDBC[归纳].pdf

    `JdbcTemplate`遵循模板方法设计模式,通过回调函数(Callback)机制,允许用户在特定的接口中实现自定义的行为。例如,`JdbcTemplate`提供了一个`ConnectionCallback`接口,用户可以实现这个接口的`doInConnection...

    Spring+JMS+消息处理

    - **Session Callback(会话回调)**:另一个回调接口,用于处理更复杂的JMS操作,如事务管理等。 #### 三、Spring JMS配置示例 Spring JMS的配置通常是在Spring的XML配置文件中完成的。下面展示了一个简单的配置...

Global site tag (gtag.js) - Google Analytics