整合多数据源(待完善)
This commit is contained in:
@@ -1,27 +1,73 @@
|
||||
package com.xwbing.datasource;
|
||||
|
||||
|
||||
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
|
||||
import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
import org.springframework.context.annotation.PropertySource;
|
||||
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
||||
import org.springframework.orm.jpa.JpaTransactionManager;
|
||||
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.sql.DataSource;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 项目名称: boot-module-demo
|
||||
* 创建时间: 2018/5/31 21:38
|
||||
* 作者: xiangwb
|
||||
* 说明:
|
||||
* 说明: JpaDataSourceConfig
|
||||
*/
|
||||
@Configuration
|
||||
@PropertySource("classpath:druid.properties")
|
||||
@EnableJpaRepositories(
|
||||
entityManagerFactoryRef = "jpaEntityManagerFactory",
|
||||
transactionManagerRef = "jpaTransactionManager",
|
||||
basePackages = {"com.xwbing.domain.repository"})
|
||||
public class JpaDataSourceConfig {
|
||||
@Bean(name="")
|
||||
@Primary
|
||||
@ConfigurationProperties("db1")
|
||||
public DataSource primaryDataSource() {
|
||||
@Resource
|
||||
private JpaProperties jpaProperties;
|
||||
|
||||
@Bean(name = "jpaDataSource")
|
||||
@ConfigurationProperties("db2")
|
||||
public DataSource dataSource() {
|
||||
return DruidDataSourceBuilder.create().build();
|
||||
}
|
||||
|
||||
@Bean(name = "jpaEntityManagerFactory")
|
||||
public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder) {
|
||||
return builder
|
||||
.dataSource(dataSource())
|
||||
.properties(getProperties(dataSource()))
|
||||
.packages("com.xwbing.domain.entity")
|
||||
.persistenceUnit("jpaPersistenceUnit")
|
||||
.build();
|
||||
}
|
||||
|
||||
@Bean(name = "japEntityManager")
|
||||
public EntityManager entityManager(EntityManagerFactoryBuilder builder) {
|
||||
return entityManagerFactory(builder).getObject().createEntityManager();
|
||||
}
|
||||
|
||||
@Bean(name = "jpaTransactionManager")
|
||||
public PlatformTransactionManager dataSourceTransactionManager(EntityManagerFactoryBuilder builder) {
|
||||
return new JpaTransactionManager(entityManagerFactory(builder).getObject());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取jpa配置信息
|
||||
*
|
||||
* @param dataSource
|
||||
* @return
|
||||
*/
|
||||
private Map<String, String> getProperties(DataSource dataSource) {
|
||||
return jpaProperties.getHibernateProperties(dataSource);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user