2014-07-14 49 views
1

我正在訓練使用屬性文件來設置數據源整合Struts2的春季和Hibernate.I:

<context:property-placeholder location="classpath:db.properties"/> 
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 
    <property name="driverClass" value="${jdbc.driverClass}" /> 
    <property name="jdbcUrl" value="${jdbc.url}" /> 
    <property name="user" value="${jdbc.username}" /> 
    <property name="password" value="${jdbc.password}" /> 
</bean> 

這是db.properties如下:

jdbc.driverClass=com.mysql.jdbc.Driver 
jdbc.url=jdbc\:mysql\://localhost\:3306/sp3 
jdbc.username=root 
jdbc.password=123456 

我找到關於這個在spring-reference中的例子,但是我只是不知道爲什麼我必須使用$ {jdbc.XXXXX}而不是$ {XXXXX}。我嘗試寫「username = root」,「password = 123456」,並且那麼它會導致「用戶拒絕訪問'管理員''本地主機'(使用密碼:是)」

如果使用表達式語言原則:$ {jdbc.username}含義「getJdbc()。getUsername();」因爲在struts-tag中,$ {model}表示getModel(),是不是?

我找到關於PropertyPlaceholderConfigurer和ComboPooledDataSource的源碼,但找不到關於getJdbc()的任何代碼;

謝謝您的幫助。

回答

0

我不明白你在問什麼。如果你願意,jdbc.username只是一個文本或者一個關鍵字。您可以在db.properties和xml <property name="user" value="${BLABLABLA}" />中使用「BLABLABLA = root」。

也許你很困惑PropertyPlaceholderConfigurerPropertyOverrideConfigurer

+0

這是我的失敗。我的問題是:當我使用jdbc.driverClass = ....時,一切正常,但我嘗試將密鑰更改爲driverClass,它將導致異常「拒絕訪問用戶'管理員' @'localhost'(使用密碼:是)「 – MageXellos

0

如果您有沒有跟你性質的問題,你會得到一個異常的東西喜歡 - >

產生的原因:java.lang.IllegalArgumentException異常:無法解析佔位符「XYZ」的字符串值「$ {XYZ }」。

你是什麼意思「一切都好」?您是否可以使用以前的設置訪問數據庫?

您收到的異常似乎與用戶名和密碼組合相關,或者您不具備適當的權利/資助。

0

jdbc.XXXXX只是屬性文件中的一個鍵。你可以使用任何東西代替它。當你執行$ {something}時,它會從屬性文件中爲關鍵字'something'選擇值,並用它來填充bean的屬性。 例如: <property name="jdbcUrl" value="${jdbc.url}" />僅設置類ComboPooledDataSource中名爲'jdbcUrl'的字段的值。

相關問題