首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring Framework事件

Spring Framework事件
EN

Stack Overflow用户
提问于 2009-09-05 06:32:26
回答 4查看 7.4K关注 0票数 11

我通读了一下Spring Framework文档,找到了一个关于使用ApplicationContext在Spring中引发事件的章节。读了几个段落后,我发现Spring事件是同步引发的。有没有办法引发异步事件?非常感谢您的帮助。我正在寻找类似的东西,这将有助于我完成我的模块。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-03-22 12:43:10

最简单的异步ApplicationListener

出版商:

代码语言:javascript
运行
复制
@Autowired
private SimpleApplicationEventMulticaster simpleApplicationEventMulticaster;

@Autowired
private AsyncTaskExecutor asyncTaskExecutor;

// ...

simpleApplicationEventMulticaster.setTaskExecutor(asyncTaskExecutor);

// ...

ApplicationEvent event = new ApplicationEvent("");
simpleApplicationEventMulticaster.multicastEvent(event);

监听程序:

代码语言:javascript
运行
复制
@Component
static class MyListener implements ApplicationListener<ApplicationEvent> 
    public void onApplicationEvent(ApplicationEvent event) {
         // do stuff, typically check event subclass (instanceof) to know which action to perform
    }
}

您应该使用您的特定事件子类化ApplicationEvent。您可以在XML文件中配置SimpleApplicationEventMulticaster及其taskExecutor

您可能希望在侦听器类中实现ApplicationEventPublisherAware,并在事件构造函数中传递一个源对象(而不是空字符串)。

票数 5
EN

Stack Overflow用户

发布于 2009-09-06 18:13:39

替代通知策略可以通过实现ApplicationEventMulticaster (请参阅Javadoc)及其底层(助手)类层次结构来实现。通常,您要么使用基于JMS的通知机制(正如David已经建议的那样),要么附加到Spring的TaskExecuter抽象(请参阅Javadoc)。

票数 3
EN

Stack Overflow用户

发布于 2009-09-05 15:26:52

Spring本身(AFAIK)是同步工作的,但你可以做的是创建你自己的ApplicationListener代理--一个实现了这个接口的类,但它并不是处理事件,而是通过发送到另一个(或新的)线程、发送JMS消息等来委托它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1382633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档