這巨坑,你填了嗎罩抗?

導(dǎo)讀

配置如何優(yōu)化

  • 上文整合的過程中的還順帶整合Mybatis和TransactionManager操刀,為什么還要重新定義他們呢烁挟?SpringBoot不是給我們都配置好了嗎?注意骨坑,此處優(yōu)化就是這兩個配置去掉撼嗓,直接用SpringBoot的自動配置,頓時高級了,別人一看你的代碼如此簡單就實現(xiàn)了多數(shù)據(jù)源的切換且警,牛叉不粉捻?
  • 如何去掉?SpringBoot萬變不離自動配置類斑芜,且看MybatisAutoConfiguration肩刃,如下:
@org.springframework.context.annotation.Configuration
@ConditionalOnClass({ SqlSessionFactory.class, SqlSessionFactoryBean.class })
@ConditionalOnSingleCandidate(DataSource.class)
@EnableConfigurationProperties(MybatisProperties.class)
@AutoConfigureAfter(DataSourceAutoConfiguration.class)
public class MybatisAutoConfiguration implements InitializingBean {
  • 不多帖了,都是廢話押搪,看前幾行就行了树酪,醒目的一行啊,@ConditionalOnSingleCandidate(DataSource.class)大州,什么鬼续语?該注解的意思就是IOC容器中只有一個指定的候選對象才起作用,但是我們注入了幾個DataSource厦画,足足三個啊疮茄,這還起作用嗎?那不廢話嘛根暑。
  • 事務(wù)管理器也是一樣力试,且看DataSourceTransactionManagerAutoConfiguration,如下:
public class DataSourceTransactionManagerAutoConfiguration {

    @Configuration
    @ConditionalOnSingleCandidate(DataSource.class)
    static class DataSourceTransactionManagerConfiguration {
  • 又看到了什么排嫌,@ConditionalOnSingleCandidate(DataSource.class)同樣的醒目畸裳,mmp,這不玩我呢嗎淳地。這怎么搞怖糊?
  • 咦,不著急颇象,此時就要看看@ConditionalOnSingleCandidate注解搞了什么伍伤,進去看看,有如下的介紹:
The condition will also match if multiple matching bean instances are already contained in the BeanFactory but a primary candidate has been defined; essentially, the condition match if auto-wiring a bean with the defined type will succeed.
  • 什么鬼遣钳,看不懂扰魂,英語太差了吧,不著急蕴茴,陳某給大家推薦一個IDEA插件劝评,文檔翻譯更加專注于程序員的專業(yè)術(shù)語,不像xx度翻譯倦淀,如下:
image
  • 好了付翁,翻譯準確了就知道了,大致意思就是IOC容器中允許你有多個候選對象晃听,但是你必須有一個主(primary)候選對象百侧,頓時靈光一現(xiàn)砰识,這不就是@Primary注解嗎,艸佣渴,我這也太優(yōu)秀了吧辫狼。
  • 二話不說,直接開擼辛润,輕輕松松一個注解搞定膨处,此時的數(shù)據(jù)源配置變得簡單多了,如下:
/**
 * @Description 數(shù)據(jù)源的配置
 * @Author CJB
 * @Date 2020/3/9 13:45
 */
@Configuration
@MapperScan(basePackages = {"com.vivachek.service.dao","com.vivachek.service.dao2"})
public class DatasourceConfig {

    /**
     * 注入數(shù)據(jù)源1
     */
    @ConfigurationProperties(prefix = "spring.datasource1")
    @Bean(value = "dataSource1")
    public DataSource dataSource1() {
        return new DruidDataSource();
    }

    /**
     * 第二個數(shù)據(jù)源
     */
    @Bean(name = "dataSource2")
    @ConfigurationProperties(prefix = "spring.datasource2")
    public DataSource dataSource2() {
        return new DruidDataSource();
    }

    /**
     * 動態(tài)數(shù)據(jù)源
     *
     * @return
     */
    @Bean
    @Primary
    public DynamicDataSource dynamicDataSource() {
        DynamicDataSource dataSource = new DynamicDataSource();
        //默認數(shù)據(jù)源砂竖,在沒有切換數(shù)據(jù)源的時候使用該數(shù)據(jù)源
        dataSource.setDefaultTargetDataSource(dataSource2());
        HashMap<Object, Object> map = Maps.newHashMap();
        map.put("dataSource1", dataSource1());
        map.put("dataSource2", dataSource2());
        //設(shè)置數(shù)據(jù)源Map真椿,動態(tài)切換就是根據(jù)key從map中獲取
        dataSource.setTargetDataSources(map);
        return dataSource;
    }
}
  • 直接在DynamicDataSource添加了一個@Primary就省去了SqlSessionFactory和TransactionManager的手動配置,是不是很easy并且顯得自己很牛叉乎澄,太有成就感了.....
  • 好了突硝,牛也吹了,運行一下吧置济,滿懷期待等待30秒.......解恰,what?什么鬼浙于?失敗了护盈,拋出了異常,如下:
image
  • 什么鬼羞酗,循環(huán)依賴異常腐宋,搞什么飛機,一萬個草泥馬在奔騰在橫無際涯的草原上檀轨。脏款。。裤园。。剂府。拧揽。。
  • 別急腺占,還有后續(xù)淤袜,關(guān)注我,將會定時更新后續(xù)文章衰伯。另外需要源碼的聯(lián)系我铡羡,微信聯(lián)系方式在個人獨立博客【關(guān)于我】中,加我注明來意意鲸,謝謝烦周。
  • 別忘了點贊喲尽爆,多來走動走動唄..........
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市读慎,隨后出現(xiàn)的幾起案子漱贱,更是在濱河造成了極大的恐慌,老刑警劉巖夭委,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幅狮,死亡現(xiàn)場離奇詭異,居然都是意外死亡株灸,警方通過查閱死者的電腦和手機崇摄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來慌烧,“玉大人逐抑,你說我怎么就攤上這事⌒铀溃” “怎么了泵肄?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長淑翼。 經(jīng)常有香客問我腐巢,道長,這世上最難降的妖魔是什么玄括? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任冯丙,我火速辦了婚禮,結(jié)果婚禮上遭京,老公的妹妹穿的比我還像新娘胃惜。我一直安慰自己,他們只是感情好哪雕,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布屯阀。 她就那樣靜靜地躺著,像睡著了一般丧凤。 火紅的嫁衣襯著肌膚如雪肯腕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天堡僻,我揣著相機與錄音糠惫,去河邊找鬼。 笑死钉疫,一個胖子當著我的面吹牛硼讽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播牲阁,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼固阁,長吁一口氣:“原來是場噩夢啊……” “哼壤躲!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起您炉,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤柒爵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后赚爵,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體棉胀,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年冀膝,在試婚紗的時候發(fā)現(xiàn)自己被綠了唁奢。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡窝剖,死狀恐怖麻掸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情赐纱,我是刑警寧澤脊奋,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站疙描,受9級特大地震影響诚隙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜起胰,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一久又、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧效五,春花似錦地消、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至戒劫,卻和暖如春半夷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背谱仪。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留否彩,地道東北人疯攒。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像列荔,于是被迫代替她去往敵國和親敬尺。 傳聞我的和親對象是個殘疾皇子枚尼,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容