Я реализую библиотеку, используя Spring boot framework.Библиотека предлагает пользовательские стартеры для Kafka, Datasource и т. Д. Для потребителей.Им следует использовать библиотеку для разработки микросервисов.
У меня возникли проблемы с реализацией автоконфигурации источника данных.
Требования
В библиотеке должна быть реализована автоконфигурация источника данных, которая должна предоставлять разработчикам возможность использовать до 2 различных источников данных, настроенных в application.yml
.Это то, что я сделал до сих пор.
library/
|__autoconfigure/
|__datasource/
|__DataSourceAutoConfiguration.java
|__PrimaryDataSourceConfiguration.java
|__SecondaryDataSourceConfiguration.java
|__datasource/
|__CustomRepository.java
|
|__datasource-spring-boot-starter/
Код
DataSourceAutoConfiguration.java
@Configuration
@ConditionalOnBean({DataSource.class})
@ConditionalOnClass({JpaRepository.class})
public class DataSourceAutoConfiguration {
}
PrimaryDataSourceConfiguration.java
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "entityManagerFactory",
)
public class PrimaryDataSourceConfiguration {
@Primary
@Bean(name = "dataSource")
@ConfigurationProperties(prefix = "service.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@Primary
@Bean(name = "entityManagerFactory")
public LocalContainerEntityManagerFactoryBean
entityManagerFactory(
EntityManagerFactoryBuilder builder,
@Qualifier("dataSource") DataSource dataSource
) {
return builder
.dataSource(dataSource)
.build();
}
@Primary
@Bean(name = "transactionManager")
public PlatformTransactionManager transactionManager(
@Qualifier("entityManagerFactory") EntityManagerFactory
entityManagerFactory
) {
return new JpaTransactionManager(entityManagerFactory);
}
}
application.yml
service:
datasource:
hikari:
jdbcUrl: jdbc:mysql://localhost:3306/test
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
При запуске службы появляется следующая ошибка:
Caused by: java.lang.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required.
at com.zaxxer.hikari.HikariConfig.validate(HikariConfig.java:1063) ~[HikariCP-2.7.9.jar:?]
Что яздесь не хватает?