Как настроить несколько подключений к базе данных во время выполнения в приложении Spring Boot ⇐ JAVA
-
Anonymous
Как настроить несколько подключений к базе данных во время выполнения в приложении Spring Boot
Я хочу создать приложение Spring Boot 2.x, в котором у меня есть две базы данных, которые необходимо настроить изначально, и подмножество баз данных, которые необходимо настроить во время выполнения приложения. Этому приложению необходимо подключаться ко многим базу данных и выполнять разные операции одновременно. Мне нужен эффективный способ запуска приложения при огромной нагрузке данных, а также способ создания и закрытия фабрики управления объектами (которая предназначена для каждой базы данных). Имейте в виду, что многие операции выполняются в базе данных в потоках < /п> У меня нет опыта весенней загрузки, но я попробовал это из чата
пакет com.example.conf; импортировать org.springframework.beans.factory.annotation.Autowired; импортировать org.springframework.boot.autoconfigure.domain.EntityScan; импортировать org.springframework.boot.jdbc.DataSourceBuilder; импортировать org.springframework.context.annotation.Bean; импортировать org.springframework.context.annotation.Configuration; импортировать org.springframework.context.annotation.Primary; импортировать org.springframework.core.env.Environment; импортировать org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; импортировать javax.sql.DataSource; импортировать java.util.HashMap; импортировать java.util.Map; @Конфигурация @EntityScan(basePackages = "com.example.entity") общественный класс DynamicDatabaseConfig { @Autowired частная среда обитания; @Начальный @Bean(name = "dynamicDataSource") общедоступный источник данных DynamicDataSource() { вернуть DataSourceBuilder.create() .url(environment.getProperty("dynamic.datasource.url")) .username(environment.getProperty("dynamic.datasource.username")) .password(environment.getProperty("dynamic.datasource.password")) .строить(); } @Bean(name = "dynamicEntityManagerFactory") public LocalContainerEntityManagerFactoryBean DynamicEntityManagerFactory() { вернуть новый LocalContainerEntityManagerFactoryBean(); } частная карта jpaProperties() { // При необходимости настройте дополнительные свойства JPA Свойства Map = new HashMap(); Properties.put("hibernate.ddl-auto", "обновление"); вернуть свойства; } } пакет com.example.conf; импортировать org.springframework.beans.factory.annotation.Autowired; импортировать org.springframework.boot.jdbc.DataSourceBuilder; импортировать org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; импортировать org.springframework.stereotype.Service; импортировать javax.persistence.EntityManager; импортировать javax.persistence.EntityManagerFactory; @Услуга общественный класс DynamicDatabaseService { @Autowired частный LocalContainerEntityManagerFactoryBean DynamicEntityManagerFactory; public EntityManager createDynamicEntityManager (String DynamicDatabaseUrl, String DynamicUsername, String DynamicPassword) { // Настраиваем динамические свойства на основе информации времени выполнения configureDynamicDataSource (dynamicDatabaseUrl, DynamicUsername, DynamicPassword); // Обновляем DynamicEntityManagerFactory с обновленной конфигурацией DynamicEntityManagerFactory.afterPropertiesSet(); // Создаем и возвращаем EntityManager EntityManagerFactoryEntityManagerFactory = DynamicEntityManagerFactory.getObject(); вернуть объектEntityManagerFactory.createEntityManager(); } Private void configureDynamicDataSource (String DynamicDatabaseUrl, String DynamicUsername, String DynamicPassword) { // Обновляем свойства DynamicDataSource на основе информации времени выполнения // Настройте это в соответствии с вашими конкретными требованиями DynamicEntityManagerFactory.setDataSource( DataSourceBuilder.create() .url(динамическийDatabaseUrl) .username(динамическоеимя пользователя) .password(динамическийпароль) .строить()); } } что находится в контроллере:
@Autowired частный DynamicDatabaseService DynamicDatabaseService; EntityManagerentityManager1=dynamicDatabaseService.createDynamicEntityManager(URL,имя пользователя,пароль);
Я хочу создать приложение Spring Boot 2.x, в котором у меня есть две базы данных, которые необходимо настроить изначально, и подмножество баз данных, которые необходимо настроить во время выполнения приложения. Этому приложению необходимо подключаться ко многим базу данных и выполнять разные операции одновременно. Мне нужен эффективный способ запуска приложения при огромной нагрузке данных, а также способ создания и закрытия фабрики управления объектами (которая предназначена для каждой базы данных). Имейте в виду, что многие операции выполняются в базе данных в потоках < /п> У меня нет опыта весенней загрузки, но я попробовал это из чата
пакет com.example.conf; импортировать org.springframework.beans.factory.annotation.Autowired; импортировать org.springframework.boot.autoconfigure.domain.EntityScan; импортировать org.springframework.boot.jdbc.DataSourceBuilder; импортировать org.springframework.context.annotation.Bean; импортировать org.springframework.context.annotation.Configuration; импортировать org.springframework.context.annotation.Primary; импортировать org.springframework.core.env.Environment; импортировать org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; импортировать javax.sql.DataSource; импортировать java.util.HashMap; импортировать java.util.Map; @Конфигурация @EntityScan(basePackages = "com.example.entity") общественный класс DynamicDatabaseConfig { @Autowired частная среда обитания; @Начальный @Bean(name = "dynamicDataSource") общедоступный источник данных DynamicDataSource() { вернуть DataSourceBuilder.create() .url(environment.getProperty("dynamic.datasource.url")) .username(environment.getProperty("dynamic.datasource.username")) .password(environment.getProperty("dynamic.datasource.password")) .строить(); } @Bean(name = "dynamicEntityManagerFactory") public LocalContainerEntityManagerFactoryBean DynamicEntityManagerFactory() { вернуть новый LocalContainerEntityManagerFactoryBean(); } частная карта jpaProperties() { // При необходимости настройте дополнительные свойства JPA Свойства Map = new HashMap(); Properties.put("hibernate.ddl-auto", "обновление"); вернуть свойства; } } пакет com.example.conf; импортировать org.springframework.beans.factory.annotation.Autowired; импортировать org.springframework.boot.jdbc.DataSourceBuilder; импортировать org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; импортировать org.springframework.stereotype.Service; импортировать javax.persistence.EntityManager; импортировать javax.persistence.EntityManagerFactory; @Услуга общественный класс DynamicDatabaseService { @Autowired частный LocalContainerEntityManagerFactoryBean DynamicEntityManagerFactory; public EntityManager createDynamicEntityManager (String DynamicDatabaseUrl, String DynamicUsername, String DynamicPassword) { // Настраиваем динамические свойства на основе информации времени выполнения configureDynamicDataSource (dynamicDatabaseUrl, DynamicUsername, DynamicPassword); // Обновляем DynamicEntityManagerFactory с обновленной конфигурацией DynamicEntityManagerFactory.afterPropertiesSet(); // Создаем и возвращаем EntityManager EntityManagerFactoryEntityManagerFactory = DynamicEntityManagerFactory.getObject(); вернуть объектEntityManagerFactory.createEntityManager(); } Private void configureDynamicDataSource (String DynamicDatabaseUrl, String DynamicUsername, String DynamicPassword) { // Обновляем свойства DynamicDataSource на основе информации времени выполнения // Настройте это в соответствии с вашими конкретными требованиями DynamicEntityManagerFactory.setDataSource( DataSourceBuilder.create() .url(динамическийDatabaseUrl) .username(динамическоеимя пользователя) .password(динамическийпароль) .строить()); } } что находится в контроллере:
@Autowired частный DynamicDatabaseService DynamicDatabaseService; EntityManagerentityManager1=dynamicDatabaseService.createDynamicEntityManager(URL,имя пользователя,пароль);
Мобильная версия