2014-09-30 22 views
0

我想了解用XML編寫的spring的配置。

... 

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close" > 
    <!-- These properties are replaced by Maven "resources" --> 
    <property name="url" value="#{$.val('db.url')}" /> 
    <property name="driverClassName" value="#{$.val('db.driver')}" /> 
    <property name="username" value="#{$.val('db.user')}" /> 
    <property name="password" value="#{$.val('db.password')}" /> 
</bean> 

字段中的值定義爲變量 「#{$。VAL(...)}」。我知道類似db.user的東西是從base xml文件中定義的項目配置文件中提取的。有人可以解釋「#{$。val(...)}」是如何工作的嗎?

+0

http://stackoverflow.com/questions/5322632/spring-expression-language-spel-with-value-dollar-vs-hash-vs – isah 2014-09-30 09:13:05

+0

謝謝@isah ...幫助! – phoenix 2014-09-30 09:20:19

+0

@isah解釋#和$ ..的使用,但是如果$用於立即評估,並且#用於延期評估,那麼它們如何一起行爲。我的意思是,如果在第一次加載頁面時加載定義,則使用$變得多餘。並且還有val()的函數,它用於從conf文件或其他內容中解析,因爲我認爲conf解析是由spring支持的。 – phoenix 2014-09-30 09:27:25

回答

0

我剛剛通過了如何'exp'。'exp'在el中工作;這裏'$'。val()。 這意味着被引用的bean id。在這種情況下,這意味着$已被定義在另一個xml文件中。

<bean id="$" class="....Config"> 
    <constructor-arg index="0" value="/etc/...conf"> 
</bean> 

因此,正在使用bean id「$」引用的conf文件中定義的「db.something」屬性被延遲調用。

相關問題