Skip to content

Commit

Permalink
Explicit notes on access to standard context beans in SpEL expressions
Browse files Browse the repository at this point in the history
Closes gh-25037
  • Loading branch information
jhoeller committed May 18, 2020
1 parent 9d429e3 commit 28177ad
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 7 deletions.
@@ -1,5 +1,5 @@
/*
* Copyright 2002-2018 the original author or authors.
* Copyright 2002-2020 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -41,8 +41,13 @@
* {@link org.springframework.beans.factory.config.BeanExpressionResolver}
* interface, parsing and evaluating Spring EL using Spring's expression module.
*
* <p>All beans in the containing {@code BeanFactory} are made available as
* predefined variables with their common bean name, including standard context
* beans such as "environment", "systemProperties" and "systemEnvironment".
*
* @author Juergen Hoeller
* @since 3.0
* @see BeanExpressionContext#getBeanFactory()
* @see org.springframework.expression.ExpressionParser
* @see org.springframework.expression.spel.standard.SpelExpressionParser
* @see org.springframework.expression.spel.support.StandardEvaluationContext
Expand Down
15 changes: 9 additions & 6 deletions src/docs/asciidoc/core/core-expressions.adoc
Expand Up @@ -539,8 +539,12 @@ example shows:
</bean>
----

The `systemProperties` variable is predefined, so you can use it in your expressions, as
the following example shows:
All beans in the application context are available as predefined variables with their
common bean name. This includes standard context beans such as `environment` (of type
`org.springframework.core.env.Environment`) as well as `systemProperties` and
`systemEnvironment` (of type `Map<String, Object>`) for access to the runtime environment.

The following example shows access to the `systemProperties` bean as a SpEL variable:

[source,xml,indent=0,subs="verbatim"]
----
Expand All @@ -551,8 +555,7 @@ the following example shows:
</bean>
----

Note that you do not have to prefix the predefined variable with the `#`
symbol in this context.
Note that you do not have to prefix the predefined variable with the `#` symbol here.

You can also refer to other bean properties by name, as the following example shows:

Expand All @@ -576,8 +579,8 @@ You can also refer to other bean properties by name, as the following example sh
[[expressions-beandef-annotation-based]]
=== Annotation Configuration

To specify a default value, you can place the `@Value` annotation on fields, methods, and method or constructor
parameters.
To specify a default value, you can place the `@Value` annotation on fields, methods,
and method or constructor parameters.

The following example sets the default value of a field variable:

Expand Down

0 comments on commit 28177ad

Please sign in to comment.