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