весенняя загрузка мультитенанта из базы данных, а не из свойств - PullRequest
0 голосов
/ 18 апреля 2020

Я хочу загрузить многопользовательскую базу данных из базы данных, а не из файла свойств. Я следую этому уроку (https://fizzylogic.nl/2016/01/24/make-your-spring-boot-application-multi-tenant-aware-in-2-steps/). Вот как выглядит мой компонент DataSource:

    @Bean
    public DataSource dataSource() {
        Map<Object, Object> resolvedDataSources = this.multiTenantDbBuilder.getResolvedDataSources();
        TenantAwareRoutingSource dataSource = new TenantAwareRoutingSource();
        dataSource.setDefaultTargetDataSource(this.defaultDataSource());
        dataSource.setTargetDataSources(resolvedDataSources);
        dataSource.afterPropertiesSet(); // Call this to finalize the initialization of the data source.
        return dataSource;
    }

Я хотел бы получить свои resolvedDataSources из базы данных (по умолчанию), проблема в том, что я не могу использовать JPA, потому что компонент DataSource не имеет был создан уже.

Спасибо всем!

1 Ответ

1 голос
/ 19 апреля 2020

Такая реализация немного сложнее, чем кажется на первый взгляд. Необходимо создать два источника данных: один для AbstractRoutingDataSource (источник данных «multi-database»), второй - для базы данных, в которой хранятся свойства арендатора ( в этом стиле ).

Рабочий пример вы можете найти в этой ветке моего демонстрационного проекта: tenant-in-db .

Чтобы запустить ветку - сначала запустите Postgres с docker -compose.yml - он создает предопределенные базы данных арендатора, затем запустите Приложение . После этого вы сможете запускать демо-запросы в api-demo.http (если вы используете IntelliJ IDEA).


Мой оригинальный пост о мультитенантности .

...