Is there an equivalent of AbstractRoutingDataSource for Spring Data Mongodb? - spring-boot

I need to route to different Mongodb datasources depending on some context. Is there an equivalent of AbstractRoutingDataSource for Spring Data Mongodb?
If not, could you suggest a way to do something similar?

Related

Spring WebFlux + reactive DB2 - how to migrate from Hikari datasource and JDBC?

I've migrated an entire project to reactive WebFlux, the only missing thing is the DB queries. At the moment I'm using JdbcTemplate and Hikari Datasources and I need to make DB calls reactive?
I tried to use vertx-db2-client but it seems it does not work fine with Webflux (or I'm not capable to use it correctly).
What options do I have? Can you show any working example with Webflux and DB2?
Thanks
You would need to find that the database DB2 is supported by Spring data reactive libraries. When I look at https://spring.io/projects/spring-data-r2dbc I don't see DB2 being in the list of database they support.

Multi-tenant Service using Spring webflux

I am trying to implement multi-tenant service using Spring web flux.I have read examples of using AbstractRoutingDataSource and ThreadLocal TenantContext to populate the tenantId for mapping datasource cofigurations. However with Web Flux we cannot use ThreadLocal and therefore this solution.
With WebFlux, I can read the tenant configuration which is a part of my User Principle -
ReactiveSecurityContextHolder.getContext().map(SecurityContext::getAuthentication)
.map(Authentication::getPrincipal).cast(UserPrincipal.class).flatMap(user -> {
TenantContext.setCurrentTenant(user.getTenantID().toString())
However I am not sure how to not use ThreadLocal. Can I use SubscriberContext for performing the same action?
Any example or help would be much apprecited.
Thanks

Spring MongoDB and GraphQL

We want to try GraphQL in our Spring based application. (its not based on spring boot). Our data repository is MongoDB. I saw various examples based on node, which makes use of graphQL + Mongo. There is also library which is with spring boot!
Can it be used directly? Or there is non spring-boot lib available?
The main thing you'd gain from Spring Boot is auto configuration for Spring Data's Mongo driver.
If you're comfortable injecting the MongoRepository into the GraphQL data sources and resolves on your own, then no, you don't need Spring Boot

Spring-boot JPA connect to postgres where database and schema are provided at runtime

I am building a multi-tenant application, where the tenant database configuration are stored in Redis. Based on the request, I will query the Redis to get the database and schema configured for that tenant, this application is built on spring boot.
I took a look at spring boot's JPA sample, and did some more google to find a suitable solution for this, unfortunately, I couldn't find one.
Is this really possible to use JPA sample provided here ?
https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-data-jpa
Please suggest me any other best possible way to tackle this problem
Thanks
Spring Data JPA uses JPA annotations to define domain model. These JPA entities define schema for your database. Obviously you can't change these entities, nor DB schema on runtime.
So no, updating schema on runtime is not possible with Spring Boot + Spring Data JPA combo.
Database connection (e.g. DB URL, username password) could be more flexible. You would need to create DataSource beans programmatically and somehow programatically define which data source to use for each query per tenant. But this wasn't requirement of Spring nor JPA ecosystem, therefore you may face lot of issues.
I was working on such system before, but we were using plain SQL queries via JDBC and were creating DB connection programatically to achieve schema changes on runtime.

Spring JPA with Jersey

I am writing a rest service using Jersey. The data access layer will be developed using Spring JPA. I will be interested to know how can I pass database properties to the Repository layer.
take a look at #Blaise Doughan's answer to a similar question
How to insert data from database with Web Service in java using JAX - RS

Resources