我想从Spring Web Flow步骤使用ApplicationEventPublisher#publishEvent()
发布应用程序事件。发布者通常是应用程序上下文,但除非必要(特别是对于模拟),否则我宁愿不做出这种假设。是否有推荐的方法从SpEL表达式引用发布者对象?
答案 0 :(得分:1)
我最近遇到过类似的问题。我需要在特定类型的对象上调用SpEL表达式的函数(本质上是自动连接到表达式本身)。不幸的是,看起来SpEL不支持它,所以我不得不在两个选项之间进行选择:
@myBean.someMethod()
#someFunction()
我认为第二种方法可能更适合您的情况,因为您具有可在整个应用程序中使用的非常通用的功能。您还可以轻松地对函数进行单元测试以及模拟目标ApplicationEventPublisher
实例。
有关功能注册的详细信息,请参阅Spring SpEL documentation。
答案 1 :(得分:1)
您不能像使用bean那样将发布者“注入”SpEL表达式。
将自定义bean添加到ApplicationEventPublisherAware
的上下文中;添加一个getter并使用@bean.publisher.publishEvent(...)
。