Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 你说的回调是什么意思?_Java_Spring - Fatal编程技术网

Java 你说的回调是什么意思?

Java 你说的回调是什么意思?,java,spring,Java,Spring,我正在阅读spring文档。每次我都会听到“回调”这个词。 例如: 生命周期回调 初始化回调等 我们如何理解回调函数?当你在春天说“生命周期回调”时,它是什么意思 我一直在努力理解这一点,但我不确定我是否理解正确。 请帮助。有一个很好的解释: 在计算机编程中,回调是对可执行代码的引用, 或一段可执行代码,作为参数传递给其他 代码。这允许较低级别的软件层调用子例程 (或功能)在更高层次上定义的 还可以查看这篇有趣的文章 样本: Paul Jakubik,C++中的回调实现 回调最容易用电话系统来

我正在阅读spring文档。每次我都会听到“回调”这个词。 例如: 生命周期回调 初始化回调等

我们如何理解回调函数?当你在春天说“生命周期回调”时,它是什么意思

我一直在努力理解这一点,但我不确定我是否理解正确。 请帮助。

有一个很好的解释:

在计算机编程中,回调是对可执行代码的引用, 或一段可执行代码,作为参数传递给其他 代码。这允许较低级别的软件层调用子例程 (或功能)在更高层次上定义的

还可以查看这篇有趣的文章

样本:

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:-添加了另一个示例。让它看起来更像我