用 Fongo 覆盖 Spring Mongo 配置
Override Spring Mongo config with Fongo
我有一个使用 Spring-Mongo 集成的 Spring 应用程序。在主应用程序配置 XML 中,我们有这样的东西来定义 Mongo 个实例(有几个):
<mongo:mongo id="mongoOne" replica-set="#{hostUrl}" >
<mongo:options connections-per-host="25"
threads-allowed-to-block-for-connection-multiplier="5"
connect-timeout="10000"
max-wait-time="120000"
auto-connect-retry="true"
socket-keep-alive="true"
socket-timeout="5000" />
</mongo:mongo>
我想在我们的 BDD 套件配置中用 Fongo 覆盖它,这样测试就不会使用真实的 mongo。
我对 "mongo:mongo" 的设置有点迷惑。我期待你最终能从中得到一个 com.mongodb.Mongo。 XML 似乎指的是 Spring MongoType?
我曾在我的 BDD 配置中尝试过此操作,但它不起作用:
@Bean(name = "mongoOne") @Primary
public Mongo mongoOne() {
return new Fongo("mongoOne").getMongo();
}
在您的 test application context
中,您需要像这样配置 fongo:
<bean name="fongo" class="com.github.fakemongo.Fongo">
<constructor-arg value="InMemoryMongo" />
</bean>
<bean id="mongo" factory-bean="fongo" factory-method="getMongo" />
<mongo:db-factory id="mongoDbFactory" mongo-ref="mongo" />
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongoDbFactory"/>
</bean>
它将覆盖 mongoTemplate 以在内存中使用 mongo
实现。确保你的 test application context
被你的测试选中。
我有一个使用 Spring-Mongo 集成的 Spring 应用程序。在主应用程序配置 XML 中,我们有这样的东西来定义 Mongo 个实例(有几个):
<mongo:mongo id="mongoOne" replica-set="#{hostUrl}" >
<mongo:options connections-per-host="25"
threads-allowed-to-block-for-connection-multiplier="5"
connect-timeout="10000"
max-wait-time="120000"
auto-connect-retry="true"
socket-keep-alive="true"
socket-timeout="5000" />
</mongo:mongo>
我想在我们的 BDD 套件配置中用 Fongo 覆盖它,这样测试就不会使用真实的 mongo。
我对 "mongo:mongo" 的设置有点迷惑。我期待你最终能从中得到一个 com.mongodb.Mongo。 XML 似乎指的是 Spring MongoType?
我曾在我的 BDD 配置中尝试过此操作,但它不起作用:
@Bean(name = "mongoOne") @Primary
public Mongo mongoOne() {
return new Fongo("mongoOne").getMongo();
}
在您的 test application context
中,您需要像这样配置 fongo:
<bean name="fongo" class="com.github.fakemongo.Fongo">
<constructor-arg value="InMemoryMongo" />
</bean>
<bean id="mongo" factory-bean="fongo" factory-method="getMongo" />
<mongo:db-factory id="mongoDbFactory" mongo-ref="mongo" />
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongoDbFactory"/>
</bean>
它将覆盖 mongoTemplate 以在内存中使用 mongo
实现。确保你的 test application context
被你的测试选中。