1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > spring boot +spring data jpa +druid 多数据源配置

spring boot +spring data jpa +druid 多数据源配置

时间:2022-12-15 01:53:49

相关推荐

spring boot +spring data jpa +druid 多数据源配置

一、首先pom.xml新增如下依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- mysql驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- druid数据源 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.28</version></dependency><!-- spring-boot-starter-data-jpa包含spring-data-jpa、spring-orm 和 Hibernate来支持JPA --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>mons</groupId><artifactId>commons-lang3</artifactId><version>3.4</version></dependency></dependencies>

二、配置文件内容如下:

server.port=8004#####################################billsystem################################################################spring.datasource.billsystem.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.billsystem.driverClassName = com.mysql.jdbc.Driverspring.datasource.billsystem.url=jdbc:mysql://192.168.88.81:3306/bill_system?useUnicode=true&characterEncoding=utf-8&useSSL=falsespring.datasource.billsystem.username=acuserspring.datasource.billsystem.password=rZN4JSSM4j5.2Q6GJaxCOzUOhwCccgMg#初始化时建立物理连接的个数spring.datasource.billsystem.druid.initialSize=5#最小连接池数量spring.datasource.billsystem.druid.minIdle=5#最大连接池数量spring.datasource.billsystem.druid.maxActive=20#连接等待超时时间spring.datasource.billsystem.druid.maxWait=60000#配置隔多久进行一次检测(检测可以关闭的空闲连接)spring.datasource.billsystem.druid.timeBetweenEvictionRunsMillis=60000#配置连接在池中的最小生存时间spring.datasource.billsystem.druid.minEvictableIdleTimeMillis=300000#用来检测连接是否有效的sqlspring.datasource.billsystem.druid.validationQuery=SELECT 1 FROM sys_property#申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能spring.datasource.billsystem.druid.testOnBorrow=false#归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能spring.datasource.billsystem.druid.testOnReturn=false#申请连接时检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效,建议配置spring.datasource.billsystem.druid.testWhileIdle=true#监控统计用的filter:stat;日志用的filter:log4j;防御sql注入的filter:wallspring.datasource.billsystem.druid.filters=stat,wall,log4jspring.datasource.billsystem.druid.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000spring.datasource.billsystem.druid.useGlobalDataSourceStat=true#####################################nsradius################################################################spring.datasource.nsradius.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.nsradius.driverClassName = com.mysql.jdbc.Driverspring.datasource.nsradius.url=jdbc:mysql://192.168.88.81:3306/nsradius?useUnicode=true&characterEncoding=utf-8&useSSL=falsespring.datasource.nsradius.username=acuserspring.datasource.nsradius.password=rZN4JSSM4j5.2Q6GJaxCOzUOhwCccgMg#初始化时建立物理连接的个数spring.datasource.nsradius.druid.initialSize=5#最小连接池数量spring.datasource.nsradius.druid.minIdle=5#最大连接池数量spring.datasource.nsradius.druid.maxActive=20#连接等待超时时间spring.datasource.nsradius.druid.maxWait=60000#配置隔多久进行一次检测(检测可以关闭的空闲连接)spring.datasource.nsradius.druid.timeBetweenEvictionRunsMillis=60000#配置连接在池中的最小生存时间spring.datasource.nsradius.druid.minEvictableIdleTimeMillis=300000#用来检测连接是否有效的sqlspring.datasource.nsradius.druid.validationQuery=SELECT 1 FROM sys_property#申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能spring.datasource.nsradius.druid.testOnBorrow=false#归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能spring.datasource.nsradius.druid.testOnReturn=false#申请连接时检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效,建议配置spring.datasource.nsradius.druid.testWhileIdle=true#监控统计用的filter:stat;日志用的filter:log4j;防御sql注入的filter:wallspring.datasource.nsradius.druid.filters=stat,wall,log4jspring.datasource.nsradius.druid.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000spring.datasource.nsradius.druid.useGlobalDataSourceStat=true

三、配置druid数据源

package com.mon.config;import com.alibaba.druid.pool.DruidDataSource;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import javax.sql.DataSource;@Configurationpublic class DruidDataSourceConfig {@Bean(name = "billSystemDataSource")@Primary@ConfigurationProperties(prefix = "spring.datasource.billsystem")public DataSource billSystemDataSource(){return new DruidDataSource();}@Bean(name = "nsradiusDataSource")@ConfigurationProperties(prefix = "spring.datasource.nsradius")public DataSource nsradiusDataSource(){return new DruidDataSource();}}

四、分别配置两个数据源以及jpa

package com.mon.config;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import org.springframework.data.jpa.repository.config.EnableJpaRepositories;import org.springframework.orm.jpa.JpaTransactionManager;import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;import org.springframework.transaction.PlatformTransactionManager;import org.springframework.transaction.annotation.EnableTransactionManagement;import javax.persistence.EntityManagerFactory;import javax.sql.DataSource;import java.util.Map;@Configuration@EnableTransactionManagement@EnableJpaRepositories(entityManagerFactoryRef = "billSystemEntityManagerFactoryBean",transactionManagerRef = "billSystemTransactionManager",//设置Repository所在位置basePackages = {"com.ligowave.bill.domain.billsystem.repository"})public class BillSystemDataSourceConfig {@Autowiredprivate JpaProperties jpaProperties;@Autowired@Qualifier("billSystemDataSource")private DataSource billSystemDataSource;@Bean(name = "billSystemEntityManagerFactoryBean")@Primarypublic LocalContainerEntityManagerFactoryBean billSystemEntityManagerFactoryBean(EntityManagerFactoryBuilder builder){return builder.dataSource(billSystemDataSource).properties(getVendorProperties(billSystemDataSource))//设置实体类所在位置.packages("com.ligowave.bill.domain.billsystem.entity").persistenceUnit("billSystemPersistenceUnit").build();}private Map<String,String> getVendorProperties(DataSource dataSource){return jpaProperties.getHibernateProperties(dataSource);}/*** EntityManagerFactory类似于Hibernate的SessionFactory,mybatis的SqlSessionFactory* 总之,在执行操作之前,我们总要获取一个EntityManager,这就类似于Hibernate的Session,* mybatis的sqlSession.* @param builder* @return*/@Bean(name = "billSystemEntityManagerFactory")public EntityManagerFactory billSystemEntityManagerFactory(EntityManagerFactoryBuilder builder){return this.billSystemEntityManagerFactoryBean(builder).getObject();}/*** 配置事物管理器*/@Bean(name = "billSystemTransactionManager")public PlatformTransactionManager billSystemTransactionManager(EntityManagerFactoryBuilder builder){return new JpaTransactionManager(billSystemEntityManagerFactory(builder));}}

package com.mon.config;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import org.springframework.data.jpa.repository.config.EnableJpaRepositories;import org.springframework.orm.jpa.JpaTransactionManager;import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;import org.springframework.transaction.PlatformTransactionManager;import org.springframework.transaction.annotation.EnableTransactionManagement;import javax.persistence.EntityManagerFactory;import javax.sql.DataSource;import java.util.Map;@Configuration@EnableTransactionManagement@EnableJpaRepositories(entityManagerFactoryRef = "nsradiusEntityManagerFactoryBean",transactionManagerRef = "nsradiusTransactionManager",//设置Repository所在位置basePackages = {"com.ligowave.bill.domain.nsradius.repository"})public class NsradiusDataSourceConfig {@Autowiredprivate JpaProperties jpaProperties;@Autowired@Qualifier("nsradiusDataSource")private DataSource nsradiusDataSource;@Bean(name = "nsradiusEntityManagerFactoryBean")public LocalContainerEntityManagerFactoryBean nsradiusEntityManagerFactoryBean(EntityManagerFactoryBuilder builder){return builder.dataSource(nsradiusDataSource).properties(getVendorProperties(nsradiusDataSource))//设置实体类所在位置.packages("com.ligowave.bill.domain.nsradius.entity").persistenceUnit("nsradiusPersistenceUnit").build();}private Map<String,String> getVendorProperties(DataSource dataSource){return jpaProperties.getHibernateProperties(dataSource);}/*** EntityManagerFactory类似于Hibernate的SessionFactory,mybatis的SqlSessionFactory* 总之,在执行操作之前,我们总要获取一个EntityManager,这就类似于Hibernate的Session,* mybatis的sqlSession.*/@Bean(name = "nsradiusEntityManagerFactory")public EntityManagerFactory nsradiusEntityManagerFactory(EntityManagerFactoryBuilder builder){return this.nsradiusEntityManagerFactoryBean(builder).getObject();}/*** 配置事物管理器*/@Bean(name = "nsradiusTransactionManager")public PlatformTransactionManager nsradiusTransactionManager(EntityManagerFactoryBuilder builder){return new JpaTransactionManager(nsradiusEntityManagerFactory(builder));}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。