Код: Выделить всё
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 file, < /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>
Correct the classpath of your application so that it contains a single, compatible version of org.springframework.data.jpa.repository.config.JpaRepositoryConfigExtension Exception in thread "main" java.lang.IllegalStateException: java.lang.NoSuchMethodError: 'void org.springframework.data.jpa.repository.config.JpaRepositoryConfigExtension.registerLazyIfNotAlreadyRegistered(java.util.function.Supplier, org.springframework.beans.factory.support.BeanDefinitionRegistry, java.lang.String, java.lang.Object)'
Reffered Tutorials
https://mookypoo.medium.com/spring-bout ... bccобразно Источники < /p>
java -версия - 17, версия Springboot - 3.5.4 < /p>
pom.xml
Код: Выделить всё
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
com.fasterxml.jackson.core
jackson-databind
2.18.2
Подробнее здесь: https://stackoverflow.com/questions/797 ... ile-config