2011-10-25 111 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