SpringBoot 配置双数据源MySQL、SQL Server

SpringBoot 配置双数据源MySQL、SQL Server,第1张

1、pom.xml引mysql和sql server依赖

2、application.yml配置mysql和sql server连接数据源的信息

3、创建DataSourceConfig.java工具类

4、创建mysql数据源配置工具类MySqlConfig.java

5、创建sql server数据源配置工具类SqlServerConfig.java

如果您有什么好的想法与方法,欢迎在评论区留言,我们一起讨论~

a.直接配置2套数据源就像下面最EASY

@Configuration

public class SpringConfig {

@Bean

public DataSource dataSource(){

return new XXDataSource()

}

@Bean

public Counter dataSource2(){

return new XXDataSource()

}

}

b.复合数据源只读分离库实现 complexds

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"

p:url="${jdbc.url}"

p:username="${jdbc.username}"

p:password="${jdbc.password}"

p:initialSize="${druid.initialSize}"

p:minIdle="${druid.minIdle}"

p:maxActive="${druid.maxActive}"

p:maxWait="${druid.maxWait}"

p:timeBetweenEvictionRunsMillis="${druid.timeBetweenEvictionRunsMillis}"

p:minEvictableIdleTimeMillis="${druid.minEvictableIdleTimeMillis}"

p:validationQuery="${druid.validationQuery}"

p:poolPreparedStatements="${druid.poolPreparedStatements}"

p:maxPoolPreparedStatementPerConnectionSize="${druid.maxPoolPreparedStatementPerConnectionSize}"/>

<bean id="slaveDataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"

p:url="${slave.jdbc.url}"

p:username="${slave.jdbc.username}"

p:password="${slave.jdbc.password}"

p:initialSize="${slave.druid.initialSize}"

p:minIdle="${slave.druid.minIdle}"

p:maxActive="${slave.druid.maxActive}"

p:maxWait="${slave.druid.maxWait}"

p:timeBetweenEvictionRunsMillis="${slave.druid.timeBetweenEvictionRunsMillis}"

p:minEvictableIdleTimeMillis="${slave.druid.minEvictableIdleTimeMillis}"

p:validationQuery="${slave.druid.validationQuery}"

p:poolPreparedStatements="${slave.druid.poolPreparedStatements}"

p:maxPoolPreparedStatementPerConnectionSize="${slave.druid.maxPoolPreparedStatementPerConnectionSize}"/>

<bean id="complexDataSource" class="com.weghst.pine.complexds.ComplexDataSource">

<constructor-arg index="0" ref="dataSource"/>

<constructor-arg index="1">

<map>

<entry key="#{T(com.weghst.pine.complexds.NamedDS).DEFAULT_SLAVE_NAME}" value-ref="slaveDataSource"/>

</map>

</constructor-arg>

</bean>

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"

p:dataSource-ref="complexDataSource"/>

<tx:annotation-driven transaction-manager="transactionManager"/>

<!--

MyBatis 配置

-->

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

<property name="dataSource" ref="complexDataSource"/>

<property name="configurationProperties">

<props>

<prop key="defaultScriptingLanguage">org.mybatis.scripting.freemarker.FreeMarkerLanguageDriver</prop>

</props>

</property>

<property name="mapperLocations" value="classpath*:com/weghst/pine/repository/*Mapper.xml"/>

</bean>

<bean id="sqlSessionTemplate" class="com.weghst.pine.util.FastSqlSessionTemplate"

c:sqlSessionFactory-ref="sqlSessionFactory"/>

<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">

<property name="basePackage" value="com.weghst.pine.repository"/>

<property name="annotationClass" value="org.springframework.stereotype.Repository"/>

<property name="sqlSessionTemplateBeanName" value="sqlSessionTemplate"/>

</bean>

<bean id="complexDataSourceInterceptor" class="com.weghst.pine.complexds.ComplexDataSourceInterceptor"/>

<aop:config>

<aop:aspect ref="complexDataSourceInterceptor">

<aop:around method="invoke" pointcut="execution(* com.weghst.pine.repository.*.*(..))"/>

</aop:aspect>

</aop:config>


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11803097.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存