ApiBoot - ApiBoot Resource Load 使用文檔

ApiBoot Resource Load

ApiBoot Resource Load是一款資源與業(yè)務(wù)完全分離的基礎(chǔ)框架,可以整合微服務(wù)(Feign噪服、OpenFeign)進(jìn)行負(fù)載均衡讀取固定類型邓了、固定所屬業(yè)務(wù)的資源信息恨诱,遵循一定的資源存儲(chǔ)規(guī)則完成自動(dòng)化資源讀取、添加骗炉、更新照宝、刪除、緩存等句葵。

使用場(chǎng)景

  • 業(yè)務(wù)圖片存儲(chǔ)
  • 業(yè)務(wù)音頻厕鹃、視頻文件存儲(chǔ)
  • 業(yè)務(wù)文件
  • 其他資源文件...

引入 ApiBoot Resource Load

pom.xml配置文件內(nèi)添加如下依賴:

<!--ApiBoot Resource Load-->
<dependency>
  <groupId>org.minbox.framework</groupId>
  <artifactId>api-boot-starter-resource-load</artifactId>
</dependency>

ApiBoot所提供的依賴都不需要添加版本號(hào),但是需要添加版本依賴乍丈,具體查看ApiBoot版本依賴

了解ApiBootResourceStoreDelegate

ApiBootResourceStoreDelegate是一個(gè)資源數(shù)據(jù)讀取的委托驅(qū)動(dòng)接口剂碴,在使用ApiBoot Resource Load時(shí),需要實(shí)現(xiàn)該接口完成資源的讀取方法loadResourceUrl()轻专,該方法的參數(shù)如下所示:

  1. 第一個(gè)參數(shù)sourceFieldValue忆矛,是查詢資源的業(yè)務(wù)編號(hào),具體的配置詳見下面的示例请垛。
  2. 第二個(gè)參數(shù)resourceType催训,是查詢資源的類型,相同的業(yè)務(wù)編號(hào)下很有可能存在多種類型宗收,比如:用戶編號(hào)對(duì)應(yīng)用戶頭像漫拭、用戶封面等。

ApiBootResourceStoreDelegate示例:

// 示例
@Service
public class ResourceLoadService implements ApiBootResourceStoreDelegate {
    /**
     * logger instance
     */
    static Logger logger = LoggerFactory.getLogger(ResourceLoadService.class);

    @Override
    public List<String> loadResourceUrl(String sourceFieldValue, String resourceType) throws ApiBootException {
        logger.info("查詢資源的業(yè)務(wù)邏輯字段值:{}", sourceFieldValue);
        logger.info("資源類型:{}", resourceType);
        return Arrays.asList(new String[]{"http://test.oss.com/111.png"});
    }
}

loadResourceUrl方法需要返回根據(jù)resourceFieldValue混稽、resourceType字段查詢到的資源列表嫂侍。

內(nèi)置注解

  • @ResourceLoad

    標(biāo)注方法需要進(jìn)行ApiBoot Resource Load自動(dòng)化讀取資源信息,該注解必須添加荚坞,且只能添加在方法上挑宠。

  • @ResourceFields

    @ResourceField注解的集合

  • @ResourceField

    配置@ResourceLoad標(biāo)注的方法具體有哪些字段需要進(jìn)行資源的自動(dòng)映射,參數(shù)解釋如下所示:

    • name:查詢資源后設(shè)置到類內(nèi)Field的名稱
    • source:查詢資源所需的業(yè)務(wù)邏輯編號(hào)類內(nèi)Field的名稱
    • type:資源類型颓影,自行定義
    • isArray:接收查詢后資源的Field類型是否為array各淀,true:array
    • isList:接收查詢后資源的Field類型是否為list,true:list

單對(duì)象資源加載

資源加載一般都是實(shí)體類的方式進(jìn)行返回的诡挂,下面我們先來創(chuàng)建一個(gè)實(shí)體類方便示例測(cè)試碎浇,如下所示:

/**
  * 示例對(duì)象
  */
@Data
class SampleUserInfo {
  public SampleUserInfo(String userId, int age) {
    this.userId = userId;
    this.age = age;
  }

  private String userId;
  private String headImage;
  private String shortImage;
  private int age;
}

返回值為單對(duì)象資源加載示例:

/**
  * 返回值為單個(gè)對(duì)象的示例
  *
  * @return
  */
@ResourceLoad
@ResourceFields({
  @ResourceField(name = "headImage", source = "userId", type = "HEAD_IMAGE"),
  @ResourceField(name = "shortImage", source = "userId", type = "SHORT_IMAGE")
})
public SampleUserInfo singleObjectSample() {
  return new SampleUserInfo("yuqiyu", 24);
}

在上面临谱,我們配置讀取兩種類型的資源,分別是:HEAD_IMAGE奴璃、SHORT_IMAGE悉默,而且配置的業(yè)務(wù)資源編號(hào)都是userId字段,這兩個(gè)字段也就是會(huì)傳遞給ApiBootResourceStoreDelegate#loadResourceUrl方法作為參數(shù)苟穆。

其中HEAD_IMAGE讀取到的資源路徑設(shè)置到SampleUserInfo類內(nèi)的headImage抄课,SHORT_IMAGE讀取到的資源路徑設(shè)置到SampleUserInfo類內(nèi)的shortImage字段。

注意:如果你的方法返回對(duì)象只有一個(gè)資源對(duì)象需要映射雳旅,可以單獨(dú)配置使用@ResourceField注解跟磨。

List集合資源加載

/**
  * 返回值為list集合的示例
  *
  * @return
  */
@ResourceLoad
@ResourceFields({
  @ResourceField(name = "headImage", source = "userId", type = "HEAD_IMAGE"),
  @ResourceField(name = "shortImage", source = "userId", type = "SHORT_IMAGE")
})
public List<SampleUserInfo> listSample() {
  List<SampleUserInfo> users = new ArrayList();
  users.add(new SampleUserInfo("yuqiyu", 24));
  users.add(new SampleUserInfo("hengboy", 24));
  return users;
}

在上面,會(huì)為返回值list內(nèi)的每一個(gè)SampleUserInfo對(duì)象進(jìn)行設(shè)置查詢的資源信息攒盈。

Map集合資源加載

/**
  * 返回值為map集合的示例
  *
  * @return
  */
@ResourceLoad
@ResourceFields({
  @ResourceField(name = "headImage", source = "userId", type = "HEAD_IMAGE"),
  @ResourceField(name = "shortImage", source = "userId", type = "SHORT_IMAGE")
})
public Map<String, SampleUserInfo> mapSample() {
  Map<String, SampleUserInfo> users = new HashMap<>(2);
  users.put("yuqiyu", new SampleUserInfo("yuqiyu", 24));
  users.put("hengboy", new SampleUserInfo("hengboy", 24));
  return users;
}

Map類型作為返回值時(shí)抵拘,其中注意map -> value必須是對(duì)象類型。

如果你有想要的使用方式型豁,你就可以提交issuse=┲搿!迎变!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末充尉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子氏豌,更是在濱河造成了極大的恐慌喉酌,老刑警劉巖热凹,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泵喘,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡般妙,警方通過查閱死者的電腦和手機(jī)纪铺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碟渺,“玉大人鲜锚,你說我怎么就攤上這事∩慌模” “怎么了芜繁?”我有些...
    開封第一講書人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)绒极。 經(jīng)常有香客問我骏令,道長(zhǎng),這世上最難降的妖魔是什么垄提? 我笑而不...
    開封第一講書人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任榔袋,我火速辦了婚禮周拐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘凰兑。我一直安慰自己妥粟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開白布吏够。 她就那樣靜靜地躺著勾给,像睡著了一般。 火紅的嫁衣襯著肌膚如雪稿饰。 梳的紋絲不亂的頭發(fā)上锦秒,一...
    開封第一講書人閱讀 51,258評(píng)論 1 300
  • 那天,我揣著相機(jī)與錄音喉镰,去河邊找鬼旅择。 笑死,一個(gè)胖子當(dāng)著我的面吹牛侣姆,可吹牛的內(nèi)容都是我干的生真。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼捺宗,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼柱蟀!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蚜厉,我...
    開封第一講書人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤长已,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后昼牛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體术瓮,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年贰健,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了胞四。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡伶椿,死狀恐怖辜伟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情脊另,我是刑警寧澤导狡,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站偎痛,受9級(jí)特大地震影響旱捧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜看彼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一廊佩、第九天 我趴在偏房一處隱蔽的房頂上張望囚聚。 院中可真熱鬧,春花似錦标锄、人聲如沸顽铸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谓松。三九已至,卻和暖如春践剂,著一層夾襖步出監(jiān)牢的瞬間鬼譬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工逊脯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留优质,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓军洼,卻偏偏與公主長(zhǎng)得像巩螃,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子匕争,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

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