如何创建具有应用程序属性中提到的多个数据源配置的单个配置 java 文件,以便在添加任意“n”个数据源时。它必须使用相同的配置文件自动处理所有数据源。
此外,所有数据源必须使用相同的 JPARepository 来查询数据。此外,我想创建一个实体管理器列表,以对特定数据源执行特定操作。
application.properties
site1.url=jdbc:postgresql://localhost:4567/postgres
site1.username=someUsername
site1.password=somePassword
site2.url=jdbc:postgresql://localhost:5433/postgres
site2.username=someUsername
site2.password=somePassword
站点配置.java
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "site1EntityManager",
transactionManagerRef = "site1TransactionManager",
basePackages = "com.someProject.repositoryInterface"
)
public class Site1Config extends HikariConfig {
@Autowired
private Environment environment;
@Primary
@Bean(name = "site1EntityManager")
public HikariDataSource mysqlDataSource() {
setJdbcUrl(environment.getProperty("site1.url"));
setUsername(environment.getProperty("site1.username"));
setPassword(environment.getProperty("site1.password"));
return new HikariDataSource(this);
}
@Primary
@Bean(name = "site1EntityManager")
public LocalContainerEntityManagerFactoryBean mysqlEntityManagerFactory(EntityManagerFactoryBuilder builder) {
return builder
.dataSource(mysqlDataSource())
.packages(ModelClass.class)
.persistenceUnit("site1PU")
.build();
}
@Primary
@Bean(name = "site1TransactionManager")
public PlatformTransactionManager mysqlTransactionManager(@Qualifier("site1EntityManager") EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
}
这是单个数据源配置文件的基本示例。我想以“site(Number)”的形式将SiteConfiguration作为泛型类,并为每种情况创建单独的数据源和实体管理器。
它应该自动从application.properites中获取数据源的数量,并且应该配置属性文件中提到的所有数据源。
此外,每个数据源都必须使用相同的JPARepostory。
据我所知,您需要创建一个“N”数量的数据源,这取决于您在application.properties.中声明的站点数量。我看到的唯一方法是,您的DataSource bean应该动态创建,而不是静态绑定到您的application.properties.
在Spring中,有一种方法是结合使用“ConfigurableBeanFactory”和“BeanFactoryAware”。
在StackOverflow中已经有一个答案:这里
希望这有帮助
我有两个配置文件(“autoContido”和“weblogic”),其中每个配置文件都有两个配置类,因为我使用的是两个数据源。 我已经将特定数据源中的bean注释为@Primary,而另一个数据源配置类中的bean不是@Primary,但我对它们的命名不同。 我以为使用@主注释就不会有像下面这样的错误,但我仍然得到它们。有人能帮我看看问题出在哪里吗? 我尝试使用@Primary annotati
有人成功地在Spring Boot应用程序中配置了两个具有不同数据源的hikari连接池吗?如何使用application.properties来完成?
问题内容: 我正在使用Spring和Hibernate,Spring的配置如下。如何配置两个数据源, session factories。使用注释管理事务。请指教 问题答案: 在Hibernate DAO中,我们可以使用@Qualifier注释,如下所示连接2个会话工厂
本文向大家介绍springboot + mybatis配置多数据源示例,包括了springboot + mybatis配置多数据源示例的使用技巧和注意事项,需要的朋友参考一下 在实际开发中,我们一个项目可能会用到多个数据库,通常一个数据库对应一个数据源。 代码结构: 简要原理: 1)DatabaseType列出所有的数据源的key---key 2)DatabaseContextHolder是一个线
我正在尝试设置Spring Boot以使用多个数据源。我已按照设置两个数据源的说明并将其中一个设置为主要数据源。 我有一个oracle的第二个配置类,它缺少@主注释,但非常相似。我还将其添加到我的主类中以排除数据源自动配置。 我面临的问题是,此设置不允许我的集成测试在H2数据库上运行以打开连接。。。 我正在使用一个单独的应用程序。src/integrationtest/resources下的属性文
我正在尝试使用两个数据源与我的SpringBoot应用程序,但无法获得第二个数据源自动连接。我尝试过很多事情,但这是我最接近的一次: 我的Yaml文件: 这是我到目前为止最接近的一次。我之所以说它是最接近的,是因为如果我删除@qualifier,那么我的两个dao方法实际上都可以工作,假设SECOND_SELECT语句对于我的DB1是有效的SQL语句。当我为非主datasouce输入@Qualif