最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot druid mybatis多數(shù)據(jù)源配置方式

 更新時(shí)間:2023年12月15日 16:32:18   作者:VergilOpen  
這篇文章主要介紹了springboot druid mybatis多數(shù)據(jù)源配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

springboot druid mybatis多數(shù)據(jù)源配置

spring boot 在配置時(shí)做了很多簡(jiǎn)化配置的設(shè)置,但是簡(jiǎn)化的配置往往已犧牲一定的定制化,比如在數(shù)據(jù)源的配置時(shí),spring boot 只提供4種數(shù)據(jù)庫(kù)連接池的配置,其中并不支持常用的druid

閱讀spring boot DataSourceBuilder 的源碼可以發(fā)現(xiàn) spring boot 提供的4種數(shù)據(jù)源類型并不是我們想要的

private static final String[] DATA_SOURCE_TYPE_NAMES = new String[] {
            "org.apache.tomcat.jdbc.pool.DataSource",
            "com.zaxxer.hikari.HikariDataSource",
            "org.apache.commons.dbcp.BasicDataSource", // deprecated
            "org.apache.commons.dbcp2.BasicDataSource" };

但是 DataSourceBuilder 提供了type方法來(lái)自定義DataSource類型

public DataSourceBuilder type(Class<? extends DataSource> type) {
        this.type = type;
        return this;
    }

知道了方法,下面配置就簡(jiǎn)單許多了

首先是application.properties文件的配置

spring.datasource.sso.url=jdbc:mysql://localhost:3306/sso?useSSL=false
spring.datasource.sso.username=root
spring.datasource.sso.password=root
spring.datasource.sso.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.sso.max-idle=5
spring.datasource.sso.max-wait=10000
spring.datasource.sso.min-idle=1
spring.datasource.sso.initial-size=1
spring.datasource.sso.validation-query=SELECT 1
spring.datasource.sso.test-on-borrow=false
spring.datasource.sso.test-while-idle=true
spring.datasource.sso.time-between-eviction-runs-millis=18800

spring.datasource.message.url=jdbc:mysql://localhost:3306/message?useSSL=false
spring.datasource.message.username=root
spring.datasource.message.password=root
spring.datasource.message.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.message.max-idle=5
spring.datasource.message.max-wait=10000
spring.datasource.message.min-idle=1
spring.datasource.message.initial-size=1
spring.datasource.message.validation-query=SELECT 1
spring.datasource.message.test-on-borrow=false
spring.datasource.message.test-while-idle=true
spring.datasource.message.time-between-eviction-runs-millis=18800

然后是具體的主數(shù)據(jù)源配置類

@Configuration
@MapperScan(basePackages = {"org.vergil.demo.core.dao.mapper.sso"}, sqlSessionFactoryRef = "ssoSqlSessionFactory")
public class SsoConfig {
    @Bean(name = "ssoDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.sso")
    @Primary
    public DataSource ssoDataSource() {
        //指定使用DruidDataSource
        return DataSourceBuilder.create().type(com.alibaba.druid.pool.DruidDataSource.class).build();
    }

    @Bean(name = "ssoSqlSessionFactory")
    @Primary
    public SqlSessionFactory testSqlSessionFactory(@Qualifier("ssoDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
//        bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/sso/*.xml"));
        return bean.getObject();
    }

    @Primary
    @Bean(name = "ssoTransactionManager")
    public DataSourceTransactionManager testTransactionManager(@Qualifier("ssoDataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    @Primary
    @Bean(name = "ssoSqlSessionTemplate")
    public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("ssoSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory);
    }

_ @ConfigurationProperties(prefix = “spring.datasource.sso”) 引入配置項(xiàng)_

使用如下方式創(chuàng)建DruidDataSource

簡(jiǎn)化配置

return DataSourceBuilder.create().type(com.alibaba.druid.pool.DruidDataSource.class).build();

第二數(shù)據(jù)源

@Configuration
@MapperScan(basePackages = {"org.vergil.demo.core.dao.mapper.message"}, sqlSessionFactoryRef = "messageSqlSessionFactory")
public class MessageConfig {
    @Bean(name = "messageDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.message")
    public DataSource messageDataSource() {
        return DataSourceBuilder.create().type(com.alibaba.druid.pool.DruidDataSource.class).build();
    }

    @Bean(name = "messageSqlSessionFactory")
    public SqlSessionFactory testSqlSessionFactory(@Qualifier("messageDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
//        bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/message/*.xml"));
        return bean.getObject();
    }

    @Bean(name = "messageTransactionManager")
    public DataSourceTransactionManager testTransactionManager(@Qualifier("messageDataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    @Bean(name = "messageSqlSessionTemplate")
    public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("messageSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
}

數(shù)據(jù)源配置完畢

每個(gè)數(shù)據(jù)源都會(huì)生成自己的sqlSession,相互獨(dú)立

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java利用DelayQueue實(shí)現(xiàn)延遲任務(wù)代碼實(shí)例

    Java利用DelayQueue實(shí)現(xiàn)延遲任務(wù)代碼實(shí)例

    這篇文章主要介紹了Java利用DelayQueue實(shí)現(xiàn)延遲任務(wù)代碼實(shí)例,DelayQueue?是一個(gè)支持延時(shí)獲取元素的阻塞隊(duì)列,?內(nèi)部采用優(yōu)先隊(duì)列?PriorityQueue?存儲(chǔ)元素,同時(shí)元素必須實(shí)現(xiàn)?Delayed?接口,需要的朋友可以參考下
    2023-12-12
  • MyBatis實(shí)現(xiàn)高級(jí)映射的示例代碼

    MyBatis實(shí)現(xiàn)高級(jí)映射的示例代碼

    高級(jí)映射主要還是映射,只是映射中的數(shù)據(jù)關(guān)系復(fù)雜了,其中就包括一對(duì)一、一對(duì)多、多對(duì)多的關(guān)系,本文主要介紹了MyBatis實(shí)現(xiàn)高級(jí)映射的示例代碼,感興趣的可以了解一下
    2024-06-06
  • SpringSecurity構(gòu)建基于JWT的登錄認(rèn)證實(shí)現(xiàn)

    SpringSecurity構(gòu)建基于JWT的登錄認(rèn)證實(shí)現(xiàn)

    這篇文章主要介紹了SpringSecurity構(gòu)建基于JWT的登錄認(rèn)證實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Spring事務(wù)和事務(wù)傳播機(jī)制操作大全

    Spring事務(wù)和事務(wù)傳播機(jī)制操作大全

    Spring中事務(wù)管理主要分為編程式事務(wù)和聲明式事務(wù),聲明式事務(wù)推薦使用,聲明式事務(wù)通過(guò)`@Transactional`注解實(shí)現(xiàn),可以簡(jiǎn)化事務(wù)操作,本文給大家介紹Spring事務(wù)和事務(wù)傳播機(jī)制,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • MyBatis設(shè)計(jì)SQL返回布爾值(Boolean)的常見(jiàn)方法

    MyBatis設(shè)計(jì)SQL返回布爾值(Boolean)的常見(jiàn)方法

    這篇文章主要為大家詳細(xì)介紹了MyBatis設(shè)計(jì)SQL返回布爾值(Boolean)的幾種常見(jiàn)方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-06-06
  • Java?多線程并發(fā)?ReentrantReadWriteLock詳情

    Java?多線程并發(fā)?ReentrantReadWriteLock詳情

    這篇文章主要介紹了Java多線程并發(fā)ReentrantReadWriteLock詳情,ReentrantReadWriteLock可重入讀寫(xiě)鎖。實(shí)際使用場(chǎng)景中,我們需要處理的操作本質(zhì)上是讀與寫(xiě),更多相關(guān)資料,感興趣的小伙伴可以參考一下下面文章內(nèi)容
    2022-06-06
  • java實(shí)現(xiàn)科學(xué)計(jì)算器的全過(guò)程與代碼

    java實(shí)現(xiàn)科學(xué)計(jì)算器的全過(guò)程與代碼

    最近編寫(xiě)了一個(gè)功能較全面的科學(xué)計(jì)算器,該計(jì)算器不僅能進(jìn)行加、減、乘、除等混合運(yùn)算,而且能計(jì)算sin、cos、tan、log等函數(shù)的值,還要具有清零、退格、求倒數(shù)、求相反數(shù)等功能,這篇文章主要給大家介紹了關(guān)于java實(shí)現(xiàn)科學(xué)計(jì)算器的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • MyBatis在注解上使用動(dòng)態(tài)SQL方式(@select使用if)

    MyBatis在注解上使用動(dòng)態(tài)SQL方式(@select使用if)

    這篇文章主要介紹了MyBatis在注解上使用動(dòng)態(tài)SQL方式(@select使用if),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • java匿名內(nèi)部類實(shí)例代碼詳解

    java匿名內(nèi)部類實(shí)例代碼詳解

    這篇文章主要介紹了java匿名內(nèi)部類實(shí)例代碼詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • IDEA啟動(dòng)后報(bào)錯(cuò)內(nèi)存溢出java.lang.OutOfMemoryError的解決方法

    IDEA啟動(dòng)后報(bào)錯(cuò)內(nèi)存溢出java.lang.OutOfMemoryError的解決方法

    IDEA在啟動(dòng)項(xiàng)目后報(bào)錯(cuò)內(nèi)存溢出,有時(shí)直接修改JVM內(nèi)存并不能全部解決問(wèn)題,所以本文給大家介紹了IDEA啟動(dòng)后報(bào)錯(cuò)內(nèi)存溢出java.lang.OutOfMemoryError的解決方法,需要的朋友可以參考下
    2025-10-10

最新評(píng)論

宁夏| 咸宁市| 元朗区| 杭州市| 莱州市| 长治县| 台东县| 雷波县| 林甸县| 白河县| 临湘市| 海门市| 光山县| 双鸭山市| 淮安市| 仪陇县| 搜索| 邹平县| 隆尧县| 南丰县| 瑞丽市| 扶余县| 肥东县| 黔江区| 大埔区| 乌苏市| 梅河口市| 双峰县| 资阳市| 大渡口区| 广宁县| 镇康县| 布尔津县| 大港区| 卢湾区| 尼木县| 宜良县| 嫩江县| 道真| 韶山市| 泰安市|