Skip to content

Commit 196200b

Browse files
committed
Clarify SpEL usage on @EventListener
Issue: SPR-14812
1 parent c062835 commit 196200b

File tree

2 files changed

+19
-8
lines changed

2 files changed

+19
-8
lines changed

spring-context/src/main/java/org/springframework/context/event/EventListener.java

+13-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2015 the original author or authors.
2+
* Copyright 2002-2016 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -87,7 +87,18 @@
8787
/**
8888
* Spring Expression Language (SpEL) attribute used for making the
8989
* event handling conditional.
90-
* <p>Default is "", meaning the event is always handled.
90+
* <p>Default is {@code ""}, meaning the event is always handled.
91+
* <p>The SpEL expression evaluates against a dedicated context that
92+
* provides the following meta-data:
93+
* <ul>
94+
* <li>{@code #root.event}, {@code #root.args} for
95+
* references to the {@link ApplicationEvent} and method arguments
96+
* respectively.</li>
97+
* <li>Method arguments can be accessed by index. For instance the
98+
* first argument can be accessed via {@code #root.args[0]}, {@code #p0}
99+
* or {@code #a0}. Arguments can also be accessed by name if that
100+
* information is available.</li>
101+
* </ul>
91102
*/
92103
String condition() default "";
93104

src/asciidoc/core-beans.adoc

+6-6
Original file line numberDiff line numberDiff line change
@@ -8314,8 +8314,8 @@ event is equal to `foo`:
83148314
[source,java,indent=0]
83158315
[subs="verbatim,quotes"]
83168316
----
8317-
@EventListener(condition = "#event.test == 'foo'")
8318-
public void processBlackListEvent(BlackListEvent event) {
8317+
@EventListener(condition = "#blEvent.test == 'foo'")
8318+
public void processBlackListEvent(BlackListEvent blEvent) {
83198319
// notify appropriate parties via notificationAddress...
83208320
}
83218321
----
@@ -8328,22 +8328,22 @@ available to the context so one can use them for conditional event processing:
83288328
|===
83298329
| Name| Location| Description| Example
83308330

8331-
| event
8331+
| Event
83328332
| root object
83338333
| The actual `ApplicationEvent`
83348334
| `#root.event`
83358335

8336-
| args
8336+
| Arguments array
83378337
| root object
83388338
| The arguments (as array) used for invoking the target
83398339
| `#root.args[0]`
83408340

8341-
| __argument name__
8341+
| __Argument name__
83428342
| evaluation context
83438343
| Name of any of the method arguments. If for some reason the names are not available
83448344
(e.g. no debug information), the argument names are also available under the `#a<#arg>`
83458345
where __#arg__ stands for the argument index (starting from 0).
8346-
| `#iban` or `#a0` (one can also use `#p0` or `#p<#arg>` notation as an alias).
8346+
| `#blEvent` or `#a0` (one can also use `#p0` or `#p<#arg>` notation as an alias).
83478347
|===
83488348

83498349
Note that `#root.event` allows you to access to the underlying event, even if your method

0 commit comments

Comments
 (0)