SpringBoot 多数据源配置
application.properties文件内容配置多数据源,如下
#primary数据源配置 spring.datasource.primary.url=jdbc:mysql://localhost:3306/joppay?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull spring.datasource.primary.username=root spring.datasource.primary.password=test spring.datasource.primary.driver-class-name=com.mysql.jdbc.Driver #primary数据源jpa配置,部分配置仅在此处生效 spring.jpa.primary.show-sql=false spring.jpa.primary.generate-ddl=false spring.jpa.primary.hibernate.ddl-auto=none spring.jpa.primary.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect #second数据源配置 spring.datasource.second.url=jdbc:mysql://localhost:3306/joppay?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull spring.datasource.second.username=root spring.datasource.second.password=test spring.datasource.second.driver-class-name=com.mysql.jdbc.Driver #second数据源jpa配置 spring.jpa.second.generate-ddl=false spring.jpa.second.hibernate.ddl-auto=none spring.jpa.second.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
在XXXApplication.java文件中代码:
1 @SpringBootApplication 2 @ComponentScan(basePackages = {"com.joppay.admin", "com.joppay.core.config", "com.joppay.core.service"}) 3 @EnableScheduling 4 @EnableCaching 5 @EnableJms 6 public class AdminApplication extends SpringBootServletInitializer { 7 8 public static void main(String[] args) { 9 SpringApplication.run(AdminApplication.class, args); 10 } 11 12 @Override 13 protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { 14 return builder.sources(AdminApplication.class); 15 } 16 }
//@EnableJpaRepositories(basePackages = {"com.joppay.core.repository"})
//@EntityScan(basePackages = {"com.joppay.core.entity"})
其中这4个要取消扫描,在下面的文件中扫描
1. PrimaryDataSourceConfig.java
1 package com.joppay.admin.datasource; 2 3 import org.springframework.beans.factory.annotation.Qualifier; 4 import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; 5 import org.springframework.boot.context.properties.ConfigurationProperties; 6 import org.springframework.context.annotation.Bean; 7 import org.springframework.context.annotation.Configuration; 8 import org.springframework.context.annotation.Primary; 9 import org.springframework.jdbc.core.JdbcTemplate; 10 11 import javax.sql.DataSource; 12 13 /** 14 * 主数据源 15 */ 16 @Configuration 17 public class PrimaryDataSourceConfig { 18 /** 19 * 扫描spring.datasource.primary开头的配置信息 20 * 21 * @return 数据源配置信息 22 */ 23 @Primary 24 @Bean(name = "primaryDataSourceProperties") 25 @ConfigurationProperties(prefix = "spring.datasource.primary") 26 public DataSourceProperties dataSourceProperties() { 27 return new DataSourceProperties(); 28 } 29 30 /** 31 * 获取主库数据源对象 32 * 33 * @param properties 注入名为primaryDataSourceProperties的bean 34 * @return 数据源对象 35 */ 36 @Primary 37 @Bean(name = "primaryDataSource") 38 public DataSource dataSource(@Qualifier("primaryDataSourceProperties") DataSourceProperties properties) { 39 return properties.initializeDataSourceBuilder().build(); 40 } 41 42 /** 43 * 该方法仅在需要使用JdbcTemplate对象时选用 44 * 45 * @param dataSource 注入名为primaryDataSource的bean 46 * @return 数据源JdbcTemplate对象 47 */ 48 @Primary 49 @Bean(name = "primaryJdbcTemplate") 50 public JdbcTemplate jdbcTemplate(@Qualifier("primaryDataSource") DataSource dataSource) { 51 return new JdbcTemplate(dataSource); 52 } 53 }