Skip to content

Commit 0254102

Browse files
committed
Clarify SpEL usage on @EventListener
Issue: SPR-14812
1 parent d216051 commit 0254102

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

Lines changed: 13 additions & 2 deletions
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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8191,8 +8191,8 @@ event is equal to `foo`:
81918191
[source,java,indent=0]
81928192
[subs="verbatim,quotes"]
81938193
----
8194-
@EventListener(condition = "#event.test == 'foo'")
8195-
public void processBlackListEvent(BlackListEvent event) {
8194+
@EventListener(condition = "#blEvent.test == 'foo'")
8195+
public void processBlackListEvent(BlackListEvent blEvent) {
81968196
// notify appropriate parties via notificationAddress...
81978197
}
81988198
----
@@ -8205,22 +8205,22 @@ available to the context so one can use them for conditional event processing:
82058205
|===
82068206
| Name| Location| Description| Example
82078207

8208-
| event
8208+
| Event
82098209
| root object
82108210
| The actual `ApplicationEvent`
82118211
| `#root.event`
82128212

8213-
| args
8213+
| Arguments array
82148214
| root object
82158215
| The arguments (as array) used for invoking the target
82168216
| `#root.args[0]`
82178217

8218-
| __argument name__
8218+
| __Argument name__
82198219
| evaluation context
82208220
| Name of any of the method arguments. If for some reason the names are not available
82218221
(e.g. no debug information), the argument names are also available under the `#a<#arg>`
82228222
where __#arg__ stands for the argument index (starting from 0).
8223-
| `#iban` or `#a0` (one can also use `#p0` or `#p<#arg>` notation as an alias).
8223+
| `#blEvent` or `#a0` (one can also use `#p0` or `#p<#arg>` notation as an alias).
82248224
|===
82258225

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

0 commit comments

Comments
 (0)