gpt4 book ai didi

java - Spring-jpa-数据 : more than one DataSource and one single Spring config

转载 作者:行者123 更新时间:2023-12-02 13:38:10 24 4
gpt4 key购买 nike

我正在尝试使用 Spring-jpa-data 中的 Crud 存储库:

我的数据访问 bean 的配置如下所示:

@Configuration
@EnableTransactionManagement
@ComponentScan (basePackages = {"com.comp.olme"})
@PropertySource("classpath:OlmeSmb-${env}.properties")
@EnableJpaRepositories(basePackages="com.comp.olme", entityManagerFactoryRef ="emGapSort", transactionManagerRef = "txManagerGapSort")
@EnableScheduling
public class OlmeSmbConfig {

@Bean
public BasicDataSource olmeDataSource() {
BasicDataSource olmeDataSource = new BasicDataSource();
...
return olmeDataSource;
}



@Bean
public BasicDataSource gapSortDataSource() {
BasicDataSource gapSortDataSource = new BasicDataSource();
...
return gapSortDataSource;
}



@Bean
public LocalContainerEntityManagerFactoryBean emFactoryOLME(@Qualifier("olmeDataSource") BasicDataSource olmeDataSource) {
LocalContainerEntityManagerFactoryBean localConnectionFactoryBean = new LocalContainerEntityManagerFactoryBean();
...
return localConnectionFactoryBean;
}



@Bean
public LocalContainerEntityManagerFactoryBean emFactoryGapSort(@Qualifier("gapSortDataSource") BasicDataSource gapSortDataSource) {
LocalContainerEntityManagerFactoryBean localConnectionFactoryBeanGapSort = new LocalContainerEntityManagerFactoryBean();
...
return localConnectionFactoryBeanGapSort;
}


@Bean
public EntityManager emOLME(@Qualifier("emFactoryOLME") EntityManagerFactory entityManagerFactory) {
return entityManagerFactory.createEntityManager();
}

@Bean
public EntityManager emGapSort(@Qualifier("emFactoryGapSort") EntityManagerFactory entityManagerFactory) {
return entityManagerFactory.createEntityManager();
}



@Bean
public JpaTransactionManager txManagerOLME(@Qualifier("emFactoryOLME") EntityManagerFactory entityManagerFactoryOLME) {
JpaTransactionManager txManagerOLME = new JpaTransactionManager();
...
return txManagerOLME;
}


@Bean
public JpaTransactionManager txManagerGapSort(@Qualifier("emFactoryGapSort") EntityManagerFactory entityManagerFactoryGapSort) {
JpaTransactionManager txManagerGapSort = new JpaTransactionManager();
....
return txManagerGapSort;
}

}

因此,如您所见,我有两个数据源、两个 EntityManagerFactories、两个 TransactionManager 等等......

但我只将一个 EntityManagerFactory 传递到 @EnableJpaRepositories 注释 (entityManagerFactoryRef ="emGapSort")。

问题是:两个人如何将多个数据源(entityManagerFactory)与 Spring-jpa-data 一起使用?

我读过一个示例,其中将拆分配置描述为一种解决方案,但我想使用一个 Spring 配置。有可能吗?谢谢。

最佳答案

来自 Spring Boot - #5401

After a careful consideration we've decided not to implement this. That annotation proposal of yours is a mix of configuration key prefix, bean prefix and other bean-related settings. While it sounds appealing on paper, it would be quite hard to implement and probably even harder to keep it consistent with user's customizations.

因此,您可以尝试将其放在两个 @Configuration 类上(每个 @Configuration 一个 @EnableJpaRepositories)。

关于java - Spring-jpa-数据 : more than one DataSource and one single Spring config,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42884810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com