当前位置:   article > 正文

JPA多数据源配置_继承jparepository接口时qualifier数据源

继承jparepository接口时qualifier数据源
  1. import org.springframework.beans.factory.annotation.Qualifier;
  2. import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
  3. import org.springframework.boot.context.properties.ConfigurationProperties;
  4. import org.springframework.context.annotation.Bean;
  5. import org.springframework.context.annotation.Configuration;
  6. import org.springframework.context.annotation.Primary;
  7. import javax.sql.DataSource;
  8. @Configuration
  9. public class DataSourcesConfig {
  10. @Bean(name = "primaryDataSource")
  11. @Qualifier("primaryDataSource")
  12. @Primary
  13. @ConfigurationProperties(prefix="spring.datasource.primary")
  14. public DataSource primaryDataSource() {
  15. System.out.println("primary db built");
  16. return DataSourceBuilder.create().build();
  17. }
  18. @Bean(name = "secondaryDataSource")
  19. @Qualifier("secondaryDataSource")
  20. @ConfigurationProperties(prefix="spring.datasource.secondary")
  21. public DataSource secondaryDataSource() {
  22. System.out.println("secondary db built");
  23. return DataSourceBuilder.create().build();
  24. }
  25. }
  1. import org.springframework.beans.factory.annotation.Autowired;
  2. import org.springframework.beans.factory.annotation.Qualifier;
  3. import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
  4. import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
  5. import org.springframework.context.annotation.Bean;
  6. import org.springframework.context.annotation.Configuration;
  7. import org.springframework.context.annotation.Primary;
  8. import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
  9. import org.springframework.orm.jpa.JpaTransactionManager;
  10. import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
  11. import org.springframework.transaction.PlatformTransactionManager;
  12. import org.springframework.transaction.annotation.EnableTransactionManagement;
  13. import javax.persistence.EntityManager;
  14. import javax.sql.DataSource;
  15. import java.util.Map;
  16. @Configuration
  17. @EnableTransactionManagement
  18. @EnableJpaRepositories(
  19. entityManagerFactoryRef="entityManagerFactoryPrimary",
  20. transactionManagerRef="transactionManagerPrimary",
  21. basePackages= { "com.tod.sgop.repository" })
  22. public class PrimaryConfig {
  23. @Autowired
  24. @Qualifier("primaryDataSource")
  25. private DataSource primaryDataSource;
  26. @Autowired
  27. private JpaProperties jpaProperties;
  28. @Primary
  29. @Bean(name = "entityManagerPrimary")
  30. public EntityManager entityManager(EntityManagerFactoryBuilder builder) {
  31. return entityManagerFactoryPrimary(builder).getObject().createEntityManager();
  32. }
  33. @Primary
  34. @Bean(name = "entityManagerFactoryPrimary")
  35. public LocalContainerEntityManagerFactoryBean entityManagerFactoryPrimary (EntityManagerFactoryBuilder builder) {
  36. return builder
  37. .dataSource(primaryDataSource)
  38. .properties(getVendorProperties(primaryDataSource))
  39. .packages("com.tod.sgop.domain")
  40. .persistenceUnit("primaryPersistenceUnit")
  41. .build();
  42. }
  43. private Map<String, String> getVendorProperties(DataSource dataSource) {
  44. return jpaProperties.getHibernateProperties(dataSource);
  45. }
  46. @Primary
  47. @Bean(name = "transactionManagerPrimary")
  48. public PlatformTransactionManager transactionManagerPrimary(EntityManagerFactoryBuilder builder) {
  49. return new JpaTransactionManager(entityManagerFactoryPrimary(builder).getObject());
  50. }
  51. }

 

  1. import org.springframework.beans.factory.annotation.Autowired;
  2. import org.springframework.beans.factory.annotation.Qualifier;
  3. import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
  4. import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
  5. import org.springframework.context.annotation.Bean;
  6. import org.springframework.context.annotation.Configuration;
  7. import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
  8. import org.springframework.orm.jpa.JpaTransactionManager;
  9. import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
  10. import org.springframework.transaction.PlatformTransactionManager;
  11. import org.springframework.transaction.annotation.EnableTransactionManagement;
  12. import javax.persistence.EntityManager;
  13. import javax.sql.DataSource;
  14. import java.util.Map;
  15. @Configuration
  16. @EnableTransactionManagement
  17. @EnableJpaRepositories(
  18. entityManagerFactoryRef="entityManagerFactorySecondary",
  19. transactionManagerRef="transactionManagerSecondary",
  20. basePackages= { "com.tod.sgop.oracle.repository" })
  21. public class SecondaryConfig {
  22. @Autowired
  23. private JpaProperties jpaProperties;
  24. @Autowired
  25. @Qualifier("secondaryDataSource")
  26. private DataSource secondaryDataSource;
  27. @Bean(name = "entityManagerSecondary")
  28. public EntityManager entityManager(EntityManagerFactoryBuilder builder) {
  29. return entityManagerFactorySecondary(builder).getObject().createEntityManager();
  30. }
  31. @Bean(name = "entityManagerFactorySecondary")
  32. public LocalContainerEntityManagerFactoryBean entityManagerFactorySecondary (EntityManagerFactoryBuilder builder) {
  33. return builder
  34. .dataSource(secondaryDataSource)
  35. .properties(getVendorProperties(secondaryDataSource))
  36. .packages("com.tod.sgop.domain")
  37. .persistenceUnit("secondaryPersistenceUnit")
  38. .build();
  39. }
  40. private Map<String, String> getVendorProperties(DataSource dataSource) {
  41. return jpaProperties.getHibernateProperties(dataSource);
  42. }
  43. @Bean(name = "transactionManagerSecondary")
  44. PlatformTransactionManager transactionManagerSecondary(EntityManagerFactoryBuilder builder) {
  45. return new JpaTransactionManager(entityManagerFactorySecondary(builder).getObject());
  46. }
  47. }

 

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/blog/article/detail/52320
推荐阅读
相关标签
  

闽ICP备14008679号