springboot+jpa+mybatis 多資料來源支援
阿新 • • 發佈:2019-01-26
package com.ehaoyao.paycenter.job.common.config;/** * ERP資料來源配置類 * * @author PF * Created by dell on 2018-05-04. */ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties; import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; import javax.persistence.EntityManager; import javax.sql.DataSource; import java.util.Map; /** * com.ehaoyao.paycenter.job.common.config * ERP資料來源配置類 * @author PF * @create 2018-05-04 10:27 **/ @Configuration @EnableTransactionManagement @EnableJpaRepositories( entityManagerFactoryRef="erpEntityManagerFactory", transactionManagerRef="erpTransactionManager", basePackages= { "com.ehaoyao.paycenter.persistence.pay.Repository" }) public class ErpDataSourceConfig { @Autowired @Qualifier("erpDataSource") private DataSource erpDataSource; @Bean(name = "entityManager") public EntityManager entityManager(EntityManagerFactoryBuilder builder) { return erpEntityManagerFactory(builder).getObject().createEntityManager(); } @Bean(name = "erpEntityManagerFactory") public LocalContainerEntityManagerFactoryBean erpEntityManagerFactory (EntityManagerFactoryBuilder builder) { return builder .dataSource(erpDataSource) .properties(getVendorProperties(erpDataSource)) .packages("com.ehaoyao.paycenter.persistence.pay.entity.erp") .persistenceUnit("erpPersistenceUnit") .build(); } @Autowired private JpaProperties jpaProperties; private Map getVendorProperties(DataSource dataSource) { return jpaProperties.getHibernateProperties(dataSource); } @Bean(name = "erpTransactionManager") public PlatformTransactionManager transactionManagerPrimary(EntityManagerFactoryBuilder builder) { return new JpaTransactionManager(erpEntityManagerFactory(builder).getObject()); } }