2014-11-21 2 views
0

У меня есть некоторые сомнения по поводу того, что именно делают эти 3 Spring SPEL пример:Что именно делает следующее выражение SpEL?

1) ПЕРВЫЙ ПРИМЕР:

<bean id="rewardsDb" class="com.acme.RewardsTestDatabase"> 
    <property name="keyGenerator" value="#{strategyBean.databaseKeyGenerator}" /> 
</bean> 

Мне кажется, что этот фрагмент кода injet внутреннего свойства с именем databaseKeyGenerator (то есть внутри стратегии Bean bean). Таким образом, в этом случае SpEL используется для доступа к конкретному свойству bean в логике Oica классики. Это правда?

2) Второй пример:

<bean id="strategyBean" class="com.acme.DefaultStrategies"> 
    <property name="databaseKeyGenerator" ref="myKeyGenerator"/> 
</bean> 

Мне кажется, что SPEL не используется, или я что-то отсутствует?

3) Третий пример:

<bean id="taxCalculator" class="com.acme.TaxCalculator"> 
    <property name="defaultLocale" value="#{ systemProperties['user.region'] }"/> 
</bean> Equivalent 

Он используется, чтобы придать значение свойства, взятое из свойств файла

в это правильно или я отсутствующее что-то или я искажая логику SPEL ?

+0

Третий пример из системного свойства, а не файл свойств, нет? В любом случае, все это описано в документах Spring Spel. –

ответ

1

Первый и второй примеры собраны вместе. Второй фактически не использует SPEL. Его единственная цель - помочь понять первый. Таким образом, вы не пропустите что-то в отношении первых двух.

Что касается третьего, systemProperties является предопределенной переменной, и вы используете его для доступа к свойствам системы. Кроме стандартных свойств системы VM вы также можете получить доступ к тем, которые вы передаете с -D при запуске приложения.

Вы можете получить доступ к файлу свойств таким же образом, создав компонент для ссылки на них, используя идентификатор bean вместо systemProperties. Например

<util:properties id="appProps" location="classpath:application.properties" /> 

, а затем

<property name="propOne" value="#{appProps['some.property'] }"/> 
Смежные вопросы