使用Spring引导和多个数据源,如何在配置类之外指定@primary?

时间:2017-11-16 03:12:28

标签: java spring spring-data-jpa

我正在使用库中定义的2个数据源,因为配置在多个项目中共享。

我收到此错误

Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed

指定哪个数据源是@Primary是一个黑客攻击。我真的很想将特定的实体管理器映射到特定的存储库。

jar文件中定义的两个配置文件都是相同的。将jr更改为jr2以进行第二次配置。

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
 entityManagerFactoryRef = "jrEntityManagerFactory",
 transactionManagerRef = "jrTransactionManager",
 basePackages = {"au.com.jr"}
)
public class PSPTrxDatasourceConfig {
    public PSPTrxDatasourceConfig() {
}

@Bean(
    name = {"jrDataSource"}
)
@ConfigurationProperties(
    prefix = "jr.datasource"
)
public DataSource dataSource() {
    return DataSourceBuilder.create().build();
}

@Bean(
    name = {"jrEntityManagerFactory"}
)
public LocalContainerEntityManagerFactoryBean jrEntityManagerFactory(EntityManagerFactoryBuilder builder, @Qualifier("jrDataSource") DataSource jrDataSource) {
    return builder.dataSource(jrDataSource).packages(new String[]{"au.com.jr"}).persistenceUnit("jr").build();
}

@Bean(
    name = {"jrTransactionManager"}
)
public PlatformTransactionManager transactionManager(@Qualifier("jrEntityManagerFactory") EntityManagerFactory jrEntityManagerFactory) {
    return new JpaTransactionManager(jrEntityManagerFactory);
 }
}

1 个答案:

答案 0 :(得分:0)

我们创造了一个黑客。还有一个额外的“多余”数据源,用于指定本地项目中的@Primary。