Spring EL变量列表?

时间:2011-10-25 07:15:14

标签: java spring spring-mvc spring-security spring-el

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

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

前两个记录在Spring Reference: chapter 6. Spring Expression Language (SpEL)中。 在Spring Reference中没有提到另外两个(或者我没有找到它们。)(我在slides中找到了它们,以及它在spring socialquestion中的用法)

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

我猜这些预定义变量中的一些并不是由spring core本身定义的,而是通过“激活”某些模块(如spring-mvc)来定义的。所以我对一个或多或少常见的spring + jpa + mvc +安全应用程序中可用的变量感兴趣。

2 个答案:

答案 0 :(得分:8)

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

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

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

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

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

答案 1 :(得分:5)

我无法回答你的根本问题,但我可能会给你一个提示。

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

通常,systemPropertiessystemEnvironment存在。在Web应用程序中加载Spring,您还将获得servletContextcontextParameterscontextAttributes。我假设,requestsession也与Web应用程序上下文相关。

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