2013-07-01 156 views
0

使用彈簧3我可以確定在運行時使用哪個bean。但是使用Spring 2.5有什麼選擇?彈簧配置文件的替代

這裏是我的背景文件中的配置:

<jee:jndi-lookup id="myDataSource" jndi-name="jdbc/mydb" 
     resource-ref="true" expected-type="javax.sql.DataSource" /> 

我可以用一個配置文件,以確定是否要使用此數據源,利用彈簧的早期版本(早於春天的時候什麼是另類3)

更新:

「myDataSource」當我在本地運行我的應用程序,在PROD環境的「JNDI」查詢將被注入,將被使用。要使用Spring 3注入「myDataSource」,我可以使用「profiles」,但是如果不使用Spring 3,我可以使用哪種方法?

+0

1)但我期望某些bean會有「myDataSource」受到傷害。那麼你真的想在某些情況下「刪除」「myDataSource」bean,或者只是有其他配置嗎? 2)這是其他配置的測試環境嗎? – Ralph

+0

@Ralph請參閱問題更新,我只是想要注入一個替代數據源,您的意思是測試/ prod環境? –

回答

3

你可以定義所有的環境依賴豆成多個文件,如:

  • beans-dev.xml
  • beans-prod.xml

你的XML配置是:

<beans> 

<import resource="beans-${myapp.env}.xml"/> 

<bean id="bean1" class="..."/> 
<bean id="bean2" class="..."/> 

</beans> 

在這種情況下,myapp.env屬性是JVM系統屬性,即配置爲-Dmyapp.env=dev-Dmyapp.env=prodmyapp.env不能從屬性佔位符中設置,因爲在之前解決了<import>屬性佔位符。

0

你需要自己建立這種類型的東西。通常通過爲每個配置文件組合在一起的多個不同文件以及在運行時選擇正確文件的約定來實現。 A -D系統屬性可以幫助您選擇哪一個。例如,我們可以擁有applicationContext-dev.xml和applicationContext-prod.xml,我們的applicationContext.xml將導入applicationContext - $ {activeProfile} .xml,並且您可以設置並加載-DactiveProfile = dev;您可以根據Spring3配置文件的設計方式推斷其他一些約定,如web.xml中的上下文參數等。