我可以引用用 SpEL 编写的条件元素中的局部字段吗?
Can I refer to a local field in condition element written in SpEL?
使用以下代码,
@EventListener(condition = "#event.type == T(...MyDomainEvent.Type).INSERTED")
void inserted(final MyDomainEvent<T> event) {
//
}
protected final Class<?> sourceType;
我可以比较条件元素中的 sourceType
和 event.getSource().getClass()
吗?
不,您不能在一般意义上引用字段值;但是,如果您知道 bean 名称,则可以,因为评估上下文有一个 bean 解析器...
@Bean
public Foo fooBean() {
return new Foo();
}
public static class Foo {
public String sourceType = "xxx";
@EventListener(condition = "@fooBean.sourceType.equals('xxx')")
public void inserter(Object event) {
System.out.println(event);
}
protected String getSourceType() {
return this.sourceType;
}
protected void setSourceType(String sourceType) {
this.sourceType = sourceType;
}
}
使用以下代码,
@EventListener(condition = "#event.type == T(...MyDomainEvent.Type).INSERTED")
void inserted(final MyDomainEvent<T> event) {
//
}
protected final Class<?> sourceType;
我可以比较条件元素中的 sourceType
和 event.getSource().getClass()
吗?
不,您不能在一般意义上引用字段值;但是,如果您知道 bean 名称,则可以,因为评估上下文有一个 bean 解析器...
@Bean
public Foo fooBean() {
return new Foo();
}
public static class Foo {
public String sourceType = "xxx";
@EventListener(condition = "@fooBean.sourceType.equals('xxx')")
public void inserter(Object event) {
System.out.println(event);
}
protected String getSourceType() {
return this.sourceType;
}
protected void setSourceType(String sourceType) {
this.sourceType = sourceType;
}
}