spring boot双数据源

匿名 (未验证) 提交于 2019-12-02 23:39:01

1、创建数据源配置文件DataSourceConfig

@Configuration  public class DataSourceConfig {     	@Primary      	@Bean(name = "primaryDataSourceProperties")      	@Qualifier("primaryDataSourceProperties")      	@ConfigurationProperties(prefix="spring.datasource.Primary")      	public DataSourceProperties primaryDataSourceProperties() {        return new DataSourceProperties();         }      @Primary          @Bean(name = "primaryDataSource")          @Qualifier("primaryDataSource")          @ConfigurationProperties(prefix="spring.datasource.Primary")          public DataSource primaryDataSource(@Qualifier("primaryDataSourceProperties")    DataSourceProperties primaryDataSourceProperties) {        		return primaryDataSourceProperties.initializeDataSourceBuilder().build();            }        @Bean(name = "secondaryDataSourceProperties")            @Qualifier("secondaryDataSourceProperties")            @ConfigurationProperties(prefix="spring.datasource.secondary")            public DataSourceProperties secondaryDataSourceProperties() {       		 return new DataSourceProperties();            }        @Bean(name = "secondaryDataSource")            @Qualifier("secondaryDataSource")            @ConfigurationProperties(prefix="spring.datasource.secondary")            public DataSource secondaryDataSource(@Qualifier("secondaryDataSourceProperties")    DataSourceProperties secondaryDataSourceProperties) {        		return secondaryDataSourceProperties.initializeDataSourceBuilder().build();            }  } 

2、配置数据源DatabasePrimaryConfiguration

@Configuration @EnableJpaRepositories(basePackages = "com.xx.xx.repository",                        entityManagerFactoryRef = "entityManagerFactoryPrimary",                        transactionManagerRef="transactionManagerPrimary") @EnableJpaAuditing(auditorAwareRef = "springSecurityAuditorAware") @EnableTransactionManagement public class DatabaseConfiguration {      @Autowired     @Qualifier("primaryDataSource")     private DataSource primaryDataSource;     @Autowired     private JpaProperties jpaProperties;     @Autowired     private HibernateProperties hibernateProperties;      @Primary     @Bean(name = "entityManagerPrimary")     public EntityManager entityManager(EntityManagerFactoryBuilder builder) {         return entityManagerFactoryPrimary(builder).getObject().createEntityManager();     }     private Map<String, Object> getVendorProperties() {         return hibernateProperties.determineHibernateProperties(jpaProperties.getProperties(), new HibernateSettings());     }     @Primary     @Bean(name = "entityManagerFactoryPrimary")     public LocalContainerEntityManagerFactoryBean entityManagerFactoryPrimary (EntityManagerFactoryBuilder builder) {         return builder             .dataSource(primaryDataSource)             .properties(getVendorProperties())             .packages("com.tianru.iotfs_miner.domain") //设置实体类所在位置             .persistenceUnit("primaryPersistenceUnit")             .build();     }     @Primary     @Bean(name = "transactionManagerPrimary")     public PlatformTransactionManager transactionManagerPrimary(EntityManagerFactoryBuilder builder) {         return new JpaTransactionManager(entityManagerFactoryPrimary(builder).getObject());     } } 

@Primary是指定默认数据源
3、配置数据源

@Configuration @EnableJpaRepositories(basePackages = "com.xx.xx.repository2",                        entityManagerFactoryRef = "entityManagerFactorySecondary",                        transactionManagerRef="transactionManagerSecondary") @EnableJpaAuditing(auditorAwareRef = "springSecurityAuditorAware") @EnableTransactionManagement public class Database2Configuration {      @Autowired     @Qualifier("secondaryDataSource")     private DataSource secondaryDataSource;     @Autowired     private JpaProperties jpaProperties;     @Autowired     private HibernateProperties hibernateProperties;     @Bean(name = "entityManagerSecondary")     public EntityManager entityManager(EntityManagerFactoryBuilder builder) {         return entityManagerFactorySecondary(builder).getObject().createEntityManager();     }     @Bean(name = "entityManagerFactorySecondary")     public LocalContainerEntityManagerFactoryBean entityManagerFactorySecondary (EntityManagerFactoryBuilder builder) {         return builder             .dataSource(secondaryDataSource)             .properties(getVendorProperties())             .packages("com.tianru.iotfs_miner.domain2") //设置实体类所在位置             .persistenceUnit("secondaryPersistenceUnit")             .build();     }     private Map<String, Object> getVendorProperties() {         return hibernateProperties.determineHibernateProperties(jpaProperties.getProperties(), new HibernateSettings());     }     @Bean(name = "transactionManagerSecondary")     public PlatformTransactionManager transactionManagerSecondary(EntityManagerFactoryBuilder builder) {         return new JpaTransactionManager(entityManagerFactorySecondary(builder).getObject());     }  } 

4、配置文件配置application.yml

spring: 	datasource:         primary:             type: com.zaxxer.hikari.HikariDataSource             url: jdbc:postgresql://47.98.181.191:9032/miner_test0522             username: tianru             password: Tianru!123             poolName: Hikari-1             auto-commit: false             maximumPoolSize: 60             minimum-idle: 5             max-lifetime: 180000             connection-timeout: 30000         secondary:             type: com.zaxxer.hikari.HikariDataSource             url: jdbc:postgresql://47.98.181.191:9032/monitor_0529             username: tianru             password: Tianru!123             poolName: Hikari-2             auto-commit: false             maximumPoolSize: 60             minimum-idle: 5             max-lifetime: 180000             connection-timeout: 30000 
文章来源: https://blog.csdn.net/FlyingKiss007/article/details/91386731
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!