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