2011-10-25 85 views
7

弹簧EL支持一些预定义的变量春季EL变量列表?

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

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

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

我猜这些预定义变量中有一些不是由spring core自己定义的,而是通过“激活”一些模块,如spring-mvc。所以我对变量感兴趣,这些变量在一个或多或少的普通弹簧+ jpa + mvc +安全应用中可用。

回答

5

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

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

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

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

7

我还注意到,environment解析为当前的org.springframework.core.env.Environment实例。我不知道这是一个记录的功能,但我一直在寻找一个简洁的方式来做到以下几点,我@Configuration类:

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

,然后让我进一步豆defintions关闭此值。

我已提交下列JIRA来解决这个问题:

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