【问题标题】:Access to Actual Class Variable from SpEL从 SpEL 访问实际类变量
【发布时间】:2022-01-13 12:31:07
【问题描述】:

根据 Spring 的事件处理机制,我们可以在某些情况下使用 SpEL 来选择特定的处理程序。取自 spring 文档。

public class EventXHandler {
    private String handlerClassName;
    @EventListener(condition = "#event.name == handlerClassName")
    public void processBlockedListEvent(BlockedListEvent event) {
        // notify appropriate parties via notificationAddress...
    }
}

我的问题是;如果我可以访问 spel 中的处理程序类的属性。

【问题讨论】:

    标签: spring spring-el


    【解决方案1】:

    没有;你不能那样做。

    如果您知道 bean 名称并为属性添加 public getter,则可以使用

    #event.name == @beanName.handlerClassName.

    【讨论】:

    • 谢谢,我的目标是基于一个抽象类并生成所有扩展它的处理程序。
    • 一个简单的解决方案是在侦听器if (!event.getName().equals(this.handlerClassName) { return; } else {...} 中进行 if 测试。也许没有那么优雅,但很有效。
    • 嗯,spring 已经支持了。它根据您的处理程序方法的参数类型调用您的特殊处理程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-11
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 2011-05-11
    • 2012-05-21
    相关资源
    最近更新 更多