AbstractRoutingDataSource позволяет динамически выбирать DataSource per-запрос. @ReadOnly аннотация или @Transactional(readOnly=true) → направить в replica. Write транзакции → primary. Реализация: кастомный AbstractRoutingDataSource.determineCurrentLookupKey() смотрит на TransactionSynchronizationManager.isCurrentTransactionReadOnly(). Важно: replica лагает за primary (replication lag) — данные могут быть немного устаревшими. Не использовать replica для reads после writes в одной операции.
Как построить read replica стратегию в Spring Boot?
Senior
246 просмотровAFK Offer AI
Как работать с read replicas через Spring Data JPA?