多数据源注入-爱代码爱编程
多数据源注入
-
数据源配置
`@Configuration
public class DataSourceConfig {@Bean(name = “purchaseDataSource”)
@Qualifier(“purchaseDataSource”)
@ConfigurationProperties(prefix = “spring.datasource.purchase”)
@Primary
public DataSource purchaseDataSource() {
return DataSourceBuilder.create().build();
}@Bean(name = “omsDataSource”)
@Qualifier(“omsDataSource”)
@ConfigurationProperties(prefix = “spring.datasource.oms”)
public DataSource omsDataSource() {
return DataSourceBuilder.create().build();
}
}` -
oms数据源配置
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactoryOms",
transactionManagerRef = "transactionManagerOms",
basePackages = {"com.allintechinc.purchase.repository.oms"})
public class OmsConfig {
@Autowired
@Qualifier("omsDataSource")
private DataSource omsDataSource;
@Autowired
private HibernateProperties hibernateProperties;
@Autowired
private JpaProperties jpaProperties;
@Primary
@Bean(name = "entityManagerOms")
public EntityManager entityManager(EntityManagerFactoryBuilder builder) {
return Objects.requireNonNull(entityManagerFactoryOms(builder).getObject()).createEntityManager();
}
@Primary
@Bean(name = "entityManagerFactoryOms")
public LocalContainerEntityManagerFactoryBean entityManagerFactoryOms(EntityManagerFactoryBuilder builder) {
return builder.dataSource(omsDataSource)
.properties(getHibernateProperties())
//换成你自己的实体类所在位置
.packages("com.allintechinc.purchase.entity.oms")
.persistenceUnit("primaryPersistenceUnit")
.build();
}
@Primary
@Bean(name = "transactionManagerOms")
public PlatformTransactionManager transactionManager(EntityManagerFactoryBuilder builder) {
return new JpaTransactionManager(Objects.requireNonNull(entityManagerFactoryOms(builder).getObject()));
}
private Map<String, Object> getHibernateProperties() {
return hibernateProperties.determineHibernateProperties(jpaProperties.getProperties(), new HibernateSettings());
}
}
3.purchase数据源配置
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactoryPurchase",
transactionManagerRef = "transactionManagerPurchase",
basePackages = {"com.allintechinc.purchase.repository.smPurchase"})
public class PurchaseConfig {
@Autowired
@Qualifier("purchaseDataSource")
private DataSource purchaseDataSource;
@Autowired
private HibernateProperties hibernateProperties;
@Autowired
private JpaProperties jpaProperties;
@Bean(name = "entityManagerPurchase")
public EntityManager entityManager(EntityManagerFactoryBuilder builder) {
return Objects.requireNonNull(entityManagerFactoryPurchase(builder).getObject()).createEntityManager();
}
@Bean(name = "entityManagerFactoryPurchase")
public LocalContainerEntityManagerFactoryBean entityManagerFactoryPurchase(EntityManagerFactoryBuilder builder) {
return builder.dataSource(purchaseDataSource)
.properties(getHibernateProperties())
//换成你自己的实体类所在位置
.packages("com.allintechinc.purchase.entity.smPurchase")
.persistenceUnit("PurchasePersistenceUnit")
.build();
}
@Bean(name = "transactionManagerPurchase")
public PlatformTransactionManager transactionManager(EntityManagerFactoryBuilder builder) {
return new JpaTransactionManager(Objects.requireNonNull(entityManagerFactoryPurchase(builder).getObject()));
}
private Map<String, Object> getHibernateProperties() {
return hibernateProperties.determineHibernateProperties(jpaProperties.getProperties(), new HibernateSettings());
}
}