2013-06-25 48 views
1

我使用JNDI來執行數據庫查詢:替換JNDI查找與模擬對象

<bean id="myController " class="com.MyController"> 
<constructor-arg index="0" ref="myDataSource" /> 
</bean> 

我不再想:

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

在Spring上下文文件我用調用構造函數通過jndi查找公開「myDataSource」,所以創建一個與「javax.sql.DataSource」類型相同的模擬對象,並將其用作構造函數參數:

<bean id="myMockDataSource" class="com.mock.MyMockDataSourceConnection"> 
</bean> 

<bean id="myController" class="com.MyController"> 
<constructor-arg index="0" ref="myMockDataSource" /> 
</bean> 

模擬對象只是返回一個虛擬連接。

這是否是正確的方法,以便在想要使用模擬對象時更長時間使用jndi查找?

回答

0

您可能想看看Spring的SimpleNamingContextBuilder類,該類對於構建JNDI樹而不需要Java EE容器很有用。 (這是來自記憶,但應該給你的想法)。您可以使用init-method屬性初始化它在你的應用程序上下文XML描述一個單右:

<bean id="jndimock" class="your.package.JndiMock" init-method="init" /> 

,並使其在jee:jndi-lookup之前創建。

乾杯,