У меня есть это, но я не могу найти никакого возможного решения.Все ответы, которые я нашел, были о настройке двух или более Datasource или Multitenant Dabatase, но это не то, что мне нужно.Я должен сделать это:
- Конфигурировать 1-й источник данных из application.properties.Это основная конфигурация базы данных
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "primaryEntityManagerFactory",
basePackages = "com.example.primary")
public class SmartConnectConfig {
@Primary
@Bean(name = "primaryDatasource")
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setUrl(env.getProperty("spring.datasource.url"));
dataSource.setUsername(env.getProperty("spring.datasource.username"));
dataSource.setPassword(env.getProperty("spring.datasource.password"));
return dataSource;
}
@Primary
@Bean(name = "primaryEntityManagerFactory")
public LocalContainerEntityManagerFactoryBean entityManagerFactory(
EntityManagerFactoryBuilder builder,
@Qualifier("primaryDatasource") DataSource dataSource) {
return builder
.dataSource(dataSource)
.packages("com.example.primary")
.persistenceUnit("primary")
.build();
}
@Primary
@Bean(name = "transactionManager")
public PlatformTransactionManager transactionManager(
@Qualifier("primaryEntityManagerFactory") EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
Когда пользователь, подключенный к системе, в зависимости от организации делает запрос и получает все свойства или базу данных организации, сохраненную в 1-й базе данных, для получения конфигурации 2-го источника данных (URL-адрес, имя пользователя, пароль, имя-драйвера-класса).Это
ОЧЕНЬ ВАЖНО , потому что в зависимости от имени пользователя мне нужно создавать разные источники данных в зависимости от организации. Добавить в Spring для управления некоторым хранилищем с помощью 2-го источника данныхПримечание: 1-й и 2-й репозитории находятся в разных пакетах, поскольку Spring может выполнить сканирование этих репозиториев, второй пакет - "com.example.second".
Кто-то может дать некоторые предложения.Спасибо