springboot项目配置双数据源

springboot项目配置双数据源,不适用于jpa2.0

这是用来配置默认数据源
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = “appEntityManagerFactory”,
transactionManagerRef = “appTransactionManager”,
basePackages = {“com.energy.greentoken.common.app.*”} //扫描实体类所在的位置

)
public class AppConfig {

@Autowired
private JpaProperties jpaProperties;

@Bean(name = "appDataSource")
@Primary
@ConfigurationProperties(prefix = "spring.datasource") //从yml文件中找到数据库的相关连接信息
public DataSource appDataSource() {
    return DataSourceBuilder.create().build();
}

@Bean(name = "appEntityManagerFactory")
@Primary //表明是默认数据源
public LocalContainerEntityManagerFactoryBean miniEntityManagerFactory(
        EntityManagerFactoryBuilder builder,
        @Qualifier("appDataSource") DataSource appDataSource) {
    return builder
            .dataSource(appDataSource)
            .packages("com.energy.greentoken.common.app.*")
            .properties(jpaProperties.getHibernateProperties(appDataSource))
            .persistenceUnit("app")
            .build();
}

@Bean(name = "appTransactionManager")
@Primary
public PlatformTransactionManager otherTransactionManager(
        @Qualifier("appEntityManagerFactory") EntityManagerFactory miniEntityManagerFactory) {
    return new JpaTransactionManager(miniEntityManagerFactory);
}

}
这是配置第二数据源
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = “miniEntityManagerFactory”,
transactionManagerRef = “miniTransactionManager”,
basePackages = {“com.energy.greentoken.common.minidecoration.dao”}
)
public class MiniConfig {

@Autowired
private JpaProperties jpaProperties;

@Bean(name = "miniDataSource")
@ConfigurationProperties(prefix = "mini.datasource")
public DataSource otherDataSource() {
    return DataSourceBuilder.create().build();
}

@Bean(name = "miniEntityManagerFactory")
public LocalContainerEntityManagerFactoryBean miniEntityManagerFactory(
        EntityManagerFactoryBuilder builder,
        @Qualifier("miniDataSource") DataSource miniDataSource) {
    return builder
            .dataSource(miniDataSource)
            .packages("com.energy.greentoken.common.minidecoration.entity")
            .properties(jpaProperties.getHibernateProperties(miniDataSource))
            .persistenceUnit("mini")
            .build();
}

@Bean(name = "miniTransactionManager")
public PlatformTransactionManager otherTransactionManager(
        @Qualifier("miniEntityManagerFactory") EntityManagerFactory miniEntityManagerFactory) {
    return new JpaTransactionManager(miniEntityManagerFactory);
}

}

需要在启动类上加入@EnableBatchProcessing和@SpringBootApplication(scanBasePackageClasses = DefaultBatchConfigurer.class)注解
另外springboot配置双数据源的时候,系统事物默认会采用默认的数据源,所以如果是第二数据源的话,需要在异常回滚上指定自己的事物。
@Transactional(rollbackFor = Exception.class, value = "miniTransactionManager")



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值