7

Spring EL 支持一些预定义的变量

  • {#systemProperties. ... }
  • {#systemEnvironment. ... }
  • {#request. ...}
  • {#session. ...}

前两个曾经记录在Spring Reference:第 6 章 Spring Expression Language (SpEL)中。Spring Reference 中没有提到另外两个(或者我没有找到它们。)(我在这张幻灯片中找到了它们,以及它在spring social和 this question中的用法)。

所以我的问题是:是否有或多或少完整的预定义 spring-el 变量列表?

我猜想这些预定义变量中的一些不是由 spring 核心本身定义的,而是通过“激活”一些模块(如 spring-mvc)来定义的。所以我对或多或少常见的 spring + jpa + mvc + security application 中可用的变量感兴趣。

4

2 回答 2

8

我还注意到environment解析为当前org.springframework.core.env.Environment实例。我不确定这是一个记录在案的功能,但我一直在寻找一种简洁的方法来在我的@Configuration课堂上执行以下操作:

@Value("#{environment.acceptsProfiles('test')}")
private boolean test;

然后允许我在进一步的 bean 定义中关闭这个值。

我已提交以下 JIRA 来解决此问题:

https://jira.springsource.org/browse/SPR-9037

于 2012-01-19T02:01:53.983 回答
5

我不能回答你的根本问题,但我可以给你一个提示。

在您的应用程序上下文启动时注册了一些预定义的 bean,但这取决于您使用的上下文类型。

通常,systemProperties并且systemEnvironment存在。在 Web 应用程序中加载 Spring,您还将获得servletContext,contextParameterscontextAttributes. 我假设request并且session也与 Web 应用程序上下文相关。

我在调试使用 Spring 3.0.6RELEASE 的应用程序时发现了这一点。一个好的起点是 SpringBeanELResolver.getValue() 方法。

于 2011-10-25T10:34:39.817 回答