什么是EJB回调函数,为什么我们需要它们?

3

我刚开始学习Java EE,但是一直无法理解回调究竟是什么以及它们的作用。

有没有人能够清晰地解释一下什么是回调?我在网站上查找了很多信息,但是都没有找到太多相关内容。

2个回答

1

正式定义

回调是一种机制,通过它可以拦截企业 Bean 的生命周期。

实际示例

我认为一个例子可以帮助展示这些回调注解的有用性。让我们来看看 @PreDestroy 回调。从 JBoss 对 EJB 的文档中,我们可以看到:

PreDestroy - 在从池中删除或销毁 Bean 时被调用。

假设你有一个具有某种文件资源的 Bean。你想确保当 Bean 被销毁时,文件锁也随之销毁。我们知道等待垃圾回收器处理这些事情是“冒险”的做法;我们不知道它何时运行。

但是我们可以放置一些逻辑,当 Bean 被删除时调用它。

@PreDestroy
public void cleanUp() {
    // Clean up your FileOutputStreams etc.
}

在您的Bean中,很清楚地表明了当Bean被销毁时将执行此方法,并且不需要外部额外的代码。这确保了在Bean被销毁时清理资源。

0

回调函数是在EJB(或容器生命周期)的特定点执行自定义代码的主要机会。

例如,您想要初始化特定字段或组件:

  • EJB 内部,
  • EJB 实例化之后,但是
  • 它开始服务请求之前

您将实现 @PostConstruct 回调方法。使用此注释进行注释的方法是向 JavaEE 运行时广告,该方法必须在创建该类的实例后立即运行。此注释的常见用途是实例化类级变量或准备共享资源。

JavaEE 规范指定了多个类似于此类的注释作为生命周期回调。这意味着在启动时,容器知道扫描部署包以查找实现任何可用回调的工件。通过这样做,它知道通知感兴趣的组件(EJB、CDI 组件、JAX-WS bean 实现)特定事件,或在应用程序服务器中发生特定操作时调用特定方法。

回调机制本身就是回调模式的一种实现(如果您来自 UI 编程世界,则是事件驱动编程)。

更多阅读:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接