开发者

MongoTemplate - get the connection URI

开发者 https://www.devze.com 2022-12-07 22:08 出处:网络
We are injecting the mongotemplate using the spring config <mongo:mongo-client id="mongoClient" connection-string="${mongodb.connect-string}">

We are injecting the mongotemplate using the spring config

<mongo:mongo-client id="mongoClient" connection-string="${mongodb.connect-string}">
   <mongo:client-settings read-preference="PRIMARY_PREFERRED" retry-writes="true" />
</mongo:mongo-client>

<mongo:db-factory id="mongoDbFactory" dbname="${mongodb.database}" mongo-client-ref="mongoClient" />

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
   <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
</bean>
@Inject
private MongoTemplate mongoTemplate;

Now we are creating a separate integration checkpoint to ensure the mongo db is available and show a green or red traffic light. Is it possible to get the connection URI from the instantiated mongotemplate or开发者_StackOverflow中文版 I should use ${mongodb.connect-string} to build the integration point?

In the older version of mongotemplate (springDataMongoDb : 1.8.2) we were able to use the following method to get the address

ServerAddress address = mongoTemplate.getDb().getMongo().getAddress();

but with spring 3.4.6 it is not possible to get the address using the above.


I would suggest using ${mongodb.connect-string} as you suggested since this is much more straight forward and doesn't require you to have to wire in the mongo template just to return a constant value when that is the exact propose of spring configs via the @Value annotation.

But a better solution to the green/red for mongo connectivity is using spring actuator which already has this functionality built in.

https://reflectoring.io/spring-boot-health-check/

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号