所谓回
调,就是客户程序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 运行结果如下
原先的女朋友:李四!
此男孩的女朋友:张三
分享到:
相关推荐
例如,Spring框架中的`JdbcTemplate`虽然名字中含有“Template”,但它其实主要依赖于回调机制。`JdbcTemplate`执行SQL查询时,会调用用户提供的回调方法来处理结果集,这类似于同步回调,因为结果处理在查询完成后...
在Spring框架中,回调机制常用于拦截器(Interceptor)和AOP(面向切面编程),允许在方法调用前后插入自定义逻辑。此外,回调还可以用于线程间的通信,例如在多线程编程中,一个线程完成特定任务后通知另一个线程...
【标题】"OSS文件上传(带回调)"指的是在Spring Boot应用中集成对象存储服务(Object Storage Service,简称OSS),并实现文件上传功能,同时具备回调机制,即在文件上传完成后,系统会自动执行预设的回调函数,通常...
在Java中,我们可以使用接口或者匿名内部类来实现回调机制。 首先,我们需要理解什么是回调。回调是一种编程技术,当一个函数执行完毕后,它会调用另一个预先指定的函数,这个被调用的函数就是回调函数。在Java中,...
Spring 框架是 Java 开发中的一个核心组件,它为开发者提供了丰富的功能,包括依赖注入(IOC)、面向切面编程(AOP)以及回调机制。让我们深入了解一下这些概念。 **Spring IOC(Inversion of Control,控制反转)*...
在微信企业号的应用开发中,回调模式是一种关键的交互机制,它使得企业号可以与外部系统进行实时的数据同步和通信。本实例将聚焦于Java版本的实现,通过深入理解回调模式,我们可以更好地构建稳定、高效的微信企业号...
可以使用Spring MVC的`@RequestMapping`注解来定义处理回调的HTTP方法。 ```java @RestController public class WeChatPayCallbackController { @PostMapping("/wechat/pay/callback") public String ...
本文将详细探讨如何在 Spring Boot 应用中基于 Spring Retry 实现重试机制,以及如何将其应用于支付回调和自定义重试场景。 首先,让我们了解 Spring Retry 的核心概念。Spring Retry 提供了一个 `@Retryable` 注解...
回调机制是Java编程中常见的一种设计模式,尤其在Spring框架中广泛运用。回调机制允许一个对象在被调用时反过来调用调用者的方法。简单来说,就是“如果你调用我,我也会调用你”。这种机制通常通过接口实现,接口...
总的来说,Spring JDBC的JdbcTemplate是Spring框架中用于数据库操作的关键组件,通过回调接口和模板方法设计,它极大地简化了数据库访问的代码,同时也提供了良好的异常处理和资源管理机制。理解和掌握JdbcTemplate...
要进行模拟,首先需要了解CGLIB代理的核心实现原理,包括代理类的生成、方法拦截和回调机制等。 1. 代理类的生成 CGLIB使用Enhancer类来生成代理对象。Enhancer的工作原理是对指定的目标类进行字节码增强,并创建该...
在微信支付的过程中,回调函数(Callback)扮演着关键的角色,它是微信支付系统与商户服务器进行交互的桥梁...在实际开发中,可以根据项目需求和微信支付的文档来调整和优化代码,以实现更加健壮和安全的回调处理机制。
`Enhancer` 是 CGLIB 的核心类,用于创建代理对象,而 `Callback` 是一个回调接口,它定义了代理对象在方法调用时需要执行的操作。在 Spring AOP 中,`ObjenesisCglibAopProxy` 类负责使用 CGLIB 创建代理对象,它会...
1. **Lifecycle Callback**:包括初始化和销毁回调。可以通过实现InitializingBean接口、使用@PostConstruct注解、指定init-method,以及实现DisposableBean接口、使用@PreDestroy注解、指定destroy-method来分别...
描述:Java认证和授权服务(JAAS)供应器JAAs验证机制,探讨了Spring Security如何代理JAAS的认证请求,并详细介绍了JAAS登录配置文件、JaasAuthenticationProvider的配置以及JAAS Callback Handler和JAAS Authority...
在`JdbcTemplate`的设计中,模板(Template)承担着事物控制、资源管理和异常处理的责任,而回调(Callback)则专注于实现应用程序特有的逻辑,如创建SQL语句、设置参数和处理结果集。这种分离使得开发者能够更专注...
例如,`new DWREngine().execute('UserService.addUser', params, callback)`,其中`addUser`是服务器端`UserService`类的一个方法,`params`是传递的参数,`callback`是回调函数,用来处理服务器返回的结果。...
`JdbcTemplate`遵循模板方法设计模式,通过回调函数(Callback)机制,允许用户在特定的接口中实现自定义的行为。例如,`JdbcTemplate`提供了一个`ConnectionCallback`接口,用户可以实现这个接口的`doInConnection...
- **Session Callback(会话回调)**:另一个回调接口,用于处理更复杂的JMS操作,如事务管理等。 #### 三、Spring JMS配置示例 Spring JMS的配置通常是在Spring的XML配置文件中完成的。下面展示了一个简单的配置...