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)註解



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章