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 }
View Code

相关文章: