
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>
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)