Код: Выделить всё
spring.datasource.primary.url=jdbc:postgresql://localhost:5432/firstdbsample
spring.datasource.primary.username=postgres
spring.datasource.primary.password=postgresql
spring.datasource.primary.driver-class-name=org.postgresql.Driver
spring.datasource.secondary.url=jdbc:postgresql://localhost:5432/seconddbsample
spring.datasource.secondary.username=postgres
spring.datasource.secondary.password=postgresql
spring.datasource.secondary.driver-class-name=org.postgresql.Driver
< /code>
Я сохранил всю свою модель, контроллер и классы репозитория отдельно для отдельных пакетов, например, следующие: < /p>
com.multidb.primary.controller
com.multidb.primary.model
com.multidb.primary.repository
com.multidb.secondary.controller
com.multidb.secondary.model
com.multidb.secondary.repository
< /code>
и создал 2 отдельного класса конфигурации для первичной и вторичной. Я продолжал в пакете com.multidb.config с promiserconfig.java и secondaryconfig.java < /p>
com.multidb.config.PrimaryConfig.java
com.multidb.config.SecondaryConfig.java
< /code>
primaryconfig.java файл: < /p>
@Configuration
@EnableJpaRepositories(
basePackages = "com.multidb.primary.repository",
entityManagerFactoryRef = "primaryEntityManagerFactory",
transactionManagerRef = "primaryTransactionManager"
)
public class PrimaryConfig {
@Bean(name = "primaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.primary")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "primaryEntityManagerFactory")
public LocalContainerEntityManagerFactoryBean primaryEntityManagerFactory(
@Qualifier("primaryDataSource") DataSource dataSource) {
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource);
em.setPackagesToScan(new String[] { "com.multidb.primary.model" });
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(vendorAdapter);
return em;
}
@Bean(name = "primaryTransactionManager")
public PlatformTransactionManager primaryTransactionManager(
@Qualifier("primaryEntityManagerFactory") EntityManagerFactory entityManagerFactory)
{
return new JpaTransactionManager(entityManagerFactory);
}
}
< /code>
SecondaryConfig.java:
@Configuration
@EnableJpaRepositories(
basePackages = "com.multidb.secondary.repository",
entityManagerFactoryRef = "secondaryEntityManagerFactory",
transactionManagerRef = "secondaryTransactionManager"
)
public class SecondaryConfig {
@Bean(name = "secondaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.secondary")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "secondaryEntityManagerFactory")
public LocalContainerEntityManagerFactoryBean secondaryEntityManagerFactory(
@Qualifier("secondaryDataSource") DataSource dataSource) {
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource);
em.setPackagesToScan(new String[] { "com.multidb.secondary.model" });
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(vendorAdapter);
return em;
}
@Bean(name = "secondaryTransactionManager")
public PlatformTransactionManager secondaryTransactionManager(
@Qualifier("secondaryEntityManagerFactory") EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
}
< /code>
Ошибка, как и следующее: < /p>
исправить классную точку вашего приложения, чтобы он содержит единую совместимую версию org.springframework.data.jpa.repository.config.jparepositoryConfigextension.data.jpa.Repository.config.jparepositoryConfigextension.data.jpa.Repository.config.jparepositoryConfigextension. java.lang.illegalstateexception: java.lang.nosuchmethoderror: 'void org.springframework.data.jpa.repository.config.jparepositoryconfigextension.registerlazyifnotalredeged (java.util.supplier, org.springframework.beans.factory.support.beandefinitionregistry, java.lang.string, java.lang.object) '
Справляемые учебники:
https://mookypoo.medium.com/spring-boot-connect-to-multiple-database-4cd56773fbcc! />https://www.baeldung.com/spring-data-jpa-multiple-databasasesобразной. 3.5.4 < /p>
pom.xml:
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
org.springframework.boot
spring-boot-starter-parent
3.5.4
com.multidb
MultiDb
0.0.1-SNAPSHOT
war
MultiDb
Demo project for Spring Boot
17
org.springframework.boot
spring-boot-starter-data-jpa
org.springframework.boot
spring-boot-starter-web
org.postgresql
postgresql
runtime
org.springframework.boot
spring-boot-starter-tomcat
provided
org.springframework.boot
spring-boot-starter-test
test
org.projectlombok
lombok
1.18.38
provided
org.springframework.boot
spring-boot-maven-plugin
Подробнее здесь: https://stackoverflow.com/questions/797 ... ile-config