欧美日韩国产一区,亚洲一区视频,色综合久久久久,私密按摩师舌头伸进去了,99re6这里只有精品,夜夜性日日交xxx性hd

關(guān)于spring依賴注入的坑

  • • 發(fā)表于 7年前
  • • 作者 大妖怪
  • • 5291 人瀏覽
  • • 6 條評論
  • • 最后編輯時間 7年前
  • • 來自 [技 術(shù)]

原創(chuàng)聲明:本文為作者原創(chuàng),未經(jīng)允許不得轉(zhuǎn)載,經(jīng)授權(quán)轉(zhuǎn)載需注明作者和出處

昨天遇到這么一個有意思的事情。首先場景是這樣的,我在集成短信功能,想到可能市面上有很多第三方的短信功能,為了方便以后更換,所以用了抽象工廠模式來做這塊的功能。

項目是用springboot2.1搭建的,功能模塊的結(jié)構(gòu)大概是這樣:

  • AbsSmsFactory:抽象工廠
  • SmsUtil:抽象工具接口
  • NetEasySmsFactory: 網(wǎng)易云短信工廠,實現(xiàn)抽象工廠
  • NetEasySmsUtil:網(wǎng)易云短信工具,實現(xiàn)抽象工具接口,并且發(fā)送短信和校驗驗證碼都是在這實現(xiàn)的
  • SmsProperty:獲取配置的,里面的內(nèi)容主要是讀取配置文件然后動態(tài)加載短信工廠類
  • SmsUtilCreater:這個類是最后直接注入到項目獲取短信工具的
    配置文件主要寫了全類名讓獲取配置文件根據(jù)類名加載

    模塊大概就是這么一個結(jié)構(gòu),但是在獲取具體工具實例的時候遇到這么一個坑,
    本來想偷懶,直接用spring的依賴注入把具體工具拿到,于是最開始在具體短信工具這樣寫:

    在網(wǎng)易云的短信工廠這樣寫:

    本來想得美美的,一運行發(fā)現(xiàn)報了個空指針,debug一看發(fā)現(xiàn)這玩意是null

    明顯沒注入進來。
    然后,想了下,原因是這樣:

    我在獲取網(wǎng)易云工廠實例的時候用了反射來獲取,相當(dāng)于new出來的實例,所以這里不能用spring的注解來注入了。但是我又不想用靜態(tài)類,又想獲取一個單例,最后只好用了單例模式的懶漢模式,網(wǎng)易云短信工具里這樣改:

    網(wǎng)易云短信工廠里這樣改:

    這樣就好了。
    如果再要加其它商家的短信接口,直接增加一個包,加一個工廠繼承抽象工廠,加一個實例繼承抽象工具,然后在配置里面替換成新增工廠的全類名就ok,調(diào)用的代碼里不需要任何改動。
分享到:
6條評論
Ctrl+Enter
作者

大妖怪

大妖怪

APP:1 帖子:76 回復(fù):200 積分:7517

已加入社區(qū)[3076]天

夢里巷口,可有你倚門回首

作者詳情》
Top