Java 你说的回调是什么意思?
我正在阅读spring文档。每次我都会听到“回调”这个词。 例如: 生命周期回调 初始化回调等 我们如何理解回调函数?当你在春天说“生命周期回调”时,它是什么意思 我一直在努力理解这一点,但我不确定我是否理解正确。 请帮助。有一个很好的解释: 在计算机编程中,回调是对可执行代码的引用, 或一段可执行代码,作为参数传递给其他 代码。这允许较低级别的软件层调用子例程 (或功能)在更高层次上定义的 还可以查看这篇有趣的文章 样本:Java 你说的回调是什么意思?,java,spring,Java,Spring,我正在阅读spring文档。每次我都会听到“回调”这个词。 例如: 生命周期回调 初始化回调等 我们如何理解回调函数?当你在春天说“生命周期回调”时,它是什么意思 我一直在努力理解这一点,但我不确定我是否理解正确。 请帮助。有一个很好的解释: 在计算机编程中,回调是对可执行代码的引用, 或一段可执行代码,作为参数传递给其他 代码。这允许较低级别的软件层调用子例程 (或功能)在更高层次上定义的 还可以查看这篇有趣的文章 样本: Paul Jakubik,C++中的回调实现 回调最容易用电话系统来
Paul Jakubik,C++中的回调实现 回调最容易用电话系统来描述。 函数调用类似于打电话给某人,询问 她问了一个问题,得到了答案,然后挂断了电话;添加回调 改变类比,这样在问了她一个问题后,你也可以给出 告诉她你的姓名和电话号码,这样她就可以给你回电话,告诉你答案
这个问题有一个很好的解释: 在计算机编程中,回调是对可执行代码的引用, 或一段可执行代码,作为参数传递给其他 代码。这允许较低级别的软件层调用子例程 (或功能)在更高层次上定义的 还可以查看这篇有趣的文章 样本:Paul Jakubik,C++中的回调实现 回调最容易用电话系统来描述。 函数调用类似于打电话给某人,询问 她问了一个问题,得到了答案,然后挂断了电话;添加回调 改变类比,这样在问了她一个问题后,你也可以给出 告诉她你的姓名和电话号码,这样她就可以给你回电话,告诉你答案
生命周期 在SpringBean的上下文中(我相信这是您正在阅读的内容的上下文——很难用您提供的少量信息来说明),Bean经历了不同的生命周期阶段(如创建和销毁)。以下是SpringBean的生命周期阶段,您可以钩住它们: 回拨 @R.T.的维基百科链接到什么是回调,这是理解回调的一个很好的起点。在Java中,回调的概念以不同的方式实现 在没有函数值参数的面向对象编程语言中,例如在Java 1.7版本之前,可以通过传递抽象类或接口的实例来模拟回调,接收方将调用其中的一个或多个方法,而调用端提供具体实现 一个很好的例子是中的@SotiriosDelamanolis,我将在这里发布它只是为了上下文/**
* @author @SotiriosDelamanolis
* see https://stackoverflow.com/a/19405498/2587435
*/
public class Test {
public static void main(String[] args) throws Exception {
new Test().doWork(new Callback() { // implementing class
@Override
public void call() {
System.out.println("callback called");
}
});
}
public void doWork(Callback callback) {
System.out.println("doing work");
callback.call();
}
public interface Callback {
void call();
}
}
生命周期回调
通过查看上图,您可以看到Spring允许您通过一些接口和注释钩住bean生命周期。比如说
public class SomeBean implements InitializingBean {
@Override
public void afterPropertiesSet() { // this is the callback method
// for the bean creation phase of the
// spring bean lifecycle
// do something after the properties are set during bean creation
}
}
连接到生命周期的bean创建部分,您可以实现初始化bean
,它有一个回调方法AfterPropertieSet()
。当您实现此接口时,Spring将在其上拾取,并调用AfterPropertieSet()
比如说
public class SomeBean implements InitializingBean {
@Override
public void afterPropertiesSet() { // this is the callback method
// for the bean creation phase of the
// spring bean lifecycle
// do something after the properties are set during bean creation
}
}
或者,您可以对非初始化bean实现的方法使用@PostConstruct
方法,或者在xml配置中使用init方法
该图显示了您可以连接到的其他生命周期阶段,并为其提供“回调”方法。生命周期阶段在图的顶部有下划线
您可以在生命周期中查看更多信息
在SpringBean的上下文中(我相信这是您正在阅读的内容的上下文——很难用您提供的少量信息来说明),Bean经历了不同的生命周期阶段(如创建和销毁)。以下是SpringBean的生命周期阶段,您可以钩住它们:
回拨
@R.T.的维基百科链接到什么是回调,这是理解回调的一个很好的起点。在Java中,回调的概念以不同的方式实现
在没有函数值参数的面向对象编程语言中,例如在Java 1.7版本之前,可以通过传递抽象类或接口的实例来模拟回调,接收方将调用其中的一个或多个方法,而调用端提供具体实现
一个很好的例子是中的@SotiriosDelamanolis,我将在这里发布它只是为了上下文
/**
* @author @SotiriosDelamanolis
* see https://stackoverflow.com/a/19405498/2587435
*/
public class Test {
public static void main(String[] args) throws Exception {
new Test().doWork(new Callback() { // implementing class
@Override
public void call() {
System.out.println("callback called");
}
});
}
public void doWork(Callback callback) {
System.out.println("doing work");
callback.call();
}
public interface Callback {
void call();
}
}
生命周期回调
通过查看上图,您可以看到Spring允许您通过一些接口和注释钩住bean生命周期。比如说
public class SomeBean implements InitializingBean {
@Override
public void afterPropertiesSet() { // this is the callback method
// for the bean creation phase of the
// spring bean lifecycle
// do something after the properties are set during bean creation
}
}
连接到生命周期的bean创建部分,您可以实现初始化bean
,它有一个回调方法AfterPropertieSet()
。当您实现此接口时,Spring将在其上拾取,并调用AfterPropertieSet()
比如说
public class SomeBean implements InitializingBean {
@Override
public void afterPropertiesSet() { // this is the callback method
// for the bean creation phase of the
// spring bean lifecycle
// do something after the properties are set during bean creation
}
}
或者,您可以对非初始化bean实现的方法使用@PostConstruct
方法,或者在xml配置中使用init方法
该图显示了您可以连接到的其他生命周期阶段,并为其提供“回调”方法。生命周期阶段在图的顶部有下划线
您可以在中看到更多信息,myFunction不是示例代码中的回调函数,也不是java代码。无论如何,实际输出与此相反code@JonatanCloutier:-添加了另一个示例。使其看起来更像Java;)是的,这是一个真正的回调myFunction在示例代码中不是回调,也不是java代码。无论如何,实际输出与此相反code@JonatanCloutier:-添加了另一个示例。让它看起来更像我