最近项目需要重新温习一下springboot。关于springboot配置多数据源,做了笔记分享给有需要的朋友。王赫老师在视频中观看的实力节点说起,实力节点王赫老师讲解的springboot教程,由浅入深,带你体验SpringBoot极速的开发过程。内容丰富,涵盖了SpringBoot开发的方方面面,更新至SpringBoot2.x系列最新版本。视频链接:https://www.bilibili.com/vide...一、目录结构目录结构二、依赖包(pom.xml)org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-data-jpamysqlmysql-connector-javaorg.springframework.bootspring-启动配置处理器trueorg.projectlomboklombok1.18.2三、配置文件server:port:8080spring:datasource:first:driver-class-name:com.mysql.jdbc.Driverjdbc-url:jdbc:mysql://localhost:3306/first?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true用户名:root密码:root第二个:驱动程序类名:com.mysql.jdbc.Driverjdbc-url:jdbc:mysql://localhost:3306/second?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true用户名:root密码:rootjpa:休眠:ddl-auto:更新命名:物理策略:org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNaming策略:隐式命名策略:org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategyshow-sql:true数据库平台:org.hibernate.dialect.MySQL5InnoDBDialect数据库:mysql四、多数据源配置(jpa)1。数据源配置包com.cetc.config;导入org.springframework.boot.context.properties.ConfigurationProperties;导入org.springframework.boot.jdbc.DataSourceBuilder;导入org.springframework.context.annotation.Bean;导入org.springframework.context.annotation。Configuration;importorg.springframework.context.annotation.Primary;importjavax.sql.DataSource;/***数据库配置*/@ConfigurationpublicclassDataSourceConfiguration{/***第一次数据连接,默认优先级最高*@return*/@Bean(name="dataSourceFirst")@Primary@ConfigurationProperties(prefix="spring.datasource.first")publicDataSourcedataSourceFirst(){//这个配置默认只满足spring配置,如果使用其他Dataconnection(druid),需要独立获取配置returnDataSourceBuilder.create().build();}/***第二个数据源*@return*/@Bean(name="dataSourceSecond")@ConfigurationProperties(prefix="spring.datasource.second")publicDataSourcedataSourceSecond(){returnDataSourceBuilder.create().build();}}说明:其实这里已经配置完成了,这里配置了两个数据源可以加入对应的JdbcTemplate,这里不做介绍,比较简单2.JpaFirstConfigurationpackagecom.cetc.config;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Qualifier;importorg.springframework.boot.autoconfigure.domain.EntityScan;导入org.springframework.boot.autoconfigure.orm.jpa.HibernateSettings;导入org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;导入org.springframework.boot.orm。jpa.EntityManagerFactoryBuilder;导入org.springframework.context.annotation.Bean;导入org.springframework.context.annotation.Configuration;导入org.springframework.context.annotation.Primary;导入org.springframework.data.jpa.repository.config。EnableJpaRepositories;导入org.springframework.orm.jpa.JpaTransactionManager;导入org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;导入org.springframework.transaction.annotation.EnableTransactionManagement;导入javax.persistence.EntityManager;importjavax.sql.DataSource;/***第一个数据源,jpa的相关配置*/@Configuration@EntityScan(basePackages="com.cetc.domain.first")//1、实体扫描//2、实体管理ref//3、事务管理@EnableJpaRepositories(basePackages="com.cetc.repository.first",entityManagerFactoryRef="firstEntityManagerFactoryBean",transactionManagerRef="firstTransactionManager")@EnableTransactionManagementpublicclassJpaFirstConfiguration{不能添加Qualifier@Autowired@Qualifier("dataSourceFirst")privateDataSourcedataSource;//jpa其他参数配置@AutowiredprivateJpaPropertiesjpaProperties;//实体管理工厂构建器Build@AutowiredprivateEntityManagerFactoryBuilder*factory/**实体管理工厂的bean*@return*/@Bean(name="firstEntityManagerFactoryBean")@PrimarypublicLocalContainerEntityManagerFactoryBeanentityManagerFactoryBean(){returnfactoryBuilder.dataSource(dataSource)//这一行的目的是添加其他的jpa配置参数如(ddl-auto:update等)//当然这个参数配置也可以在事务配置时进行.properties(jpaProperties.getHibernateProperties(newHibernateSettings()))).Packages(""com.cetc.Domain.first").persistenceunit("FirstpersistenceNit").build();}/***EntityManager,用过jpa的都知道*@返回*/@/@/@/@/@/@Bean(name="firstEntityManager")@PrimarypublicEntityManagerentityManager(){returnentityManagerFactoryBean().getObject().createEntityManager();}ag/***jpa事务管理行为*@returnManst"Beirname("Beanname(")@PrimarypublicJpaTransactionManagertransactionManager(){JpaTransactionManagerjpaTransactionManager=newJpaTransactionManager();jpaTransactionManager.setEntityManagerFactory(entityManagerFactoryBean().get());turObjectrenjpaTransactionManager;}}3。JpaSecondConfigurationpackagecom.cetc.config;导入org.springframework.beans.factory.annotation.Autowired;导入org.springframework.beans.factory.annotation.Qualifier;导入org.springframework.boot.autoconfigure.domain.EntityScan;导入org.springframework.boot.autoconfigure.orm.jpa.HibernateSettings;导入org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;导入org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;导入org.springframework.context.annotation.Bean;导入org.springframework.context.annotation.Configuration;导入org.springframework.data.jpa.repository.config.EnableJpaRepositories;导入org.springframework.orm.jpa.JpaTransactionManager;导入org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;导入org.springframework.transaction.annotation.EnableTransactionManagement;importjavax.persistence.EntityManager;importjavax.sql.DataSource;/***第二个数据源,jpa的关联配置*/@Configuration@EntityScan(basePackages="com.cetc.domain.second")//1,entityscanning//2,entitymanagementref//3,transactionmanagement@EnableJpaRepositories(basePackages="com.cetc.repository.second",????entityManagerFactoryRef="secondEntityManagerFactoryBean",????transactionManagerRef="secondTransactionManager")@EnableTransactionManagementpublicclassJpaSecondConfiguration{??//第二个数据源,必须加Qualifier??@Autowired??@Qualifier("dataSourceSecond")??privateDataSourcedataSource;??//jpa其他参数配置@Autowired??privateJpaPropertiesjpaProperties;??//实体管理工厂builder??@Autowired??privateEntityManagerFactoryBuilderfactoryBuilder;??/**???*配置第二个实体管理工厂的bean???*@return???*/??@Bean(name="secondEntityManagerFactoryBean")??publicLocalContainerEntityManagerFactoryBeanentityManagerFactoryBean(){returnfactoryBuilder.dataSource(dataSource).properties(jpaProperties.ge目的@return*/@Bean(name="secondEntityManager")publicEntityManagerentityManager(){returnentityManagerFactoryBean().getObject().createEntityManager();}/**an*jpa事务管理Be/*@return"secondTransactionManager")publicJpaTransactionManagertransactionManager(){JpaTransactionManagerjpaTransactionManager=newJpaTransactionManager();jpaTransactionManager.setEntityManagerFactory(entityManagerFactoryBean().getTransactreaction()Man);