国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Spring ProtocolResolver策略接口示例

瀏覽:85日期:2023-09-08 17:05:01

ProtocolResolver是一個(gè)策略接口,可以用于自定義協(xié)議解析, 比如spring就有一個(gè) “classpath:”開(kāi)頭的特定協(xié)議(但是spring并不是自定義ProtocolResolver 實(shí)現(xiàn)來(lái)完成這個(gè)功能的)

@FunctionalInterfacepublic interface ProtocolResolver {@NullableResource resolve(String location, ResourceLoader resourceLoader);}

@FunctionalInterface:聲明該接口是一個(gè)函數(shù)式接口,主要用于編譯級(jí)錯(cuò)誤檢查,加上該注解,該接口中只能定義唯一一個(gè)方法。

spring提供了ProtocolResolver機(jī)制,用于匹配自定義的文件schema來(lái)加載文件;而且不干擾ResourceLoader的機(jī)制,最重要的是它會(huì)添加到spring環(huán)境下的所有的loader中。我們只需要擴(kuò)展一個(gè)ProtocolResolver類(lèi),并將它在合適的實(shí)際加入到ResourceLoader即可,此后加載properties文件時(shí)我們的ProtocolResolver總會(huì)被執(zhí)行

具體用法如下:

自定義MyProtocolResolver,加載資源時(shí),當(dāng)我們輸入的資源路徑以path:開(kāi)頭時(shí),就會(huì)加載相對(duì)路徑下的config/下相應(yīng)的資源。

public class MyProtocolResolver implements ProtocolResolver { public static final String PATH = 'path:'; @Override public Resource resolve(String location, ResourceLoader resourceLoader) { if (!location.startsWith(PATH)) return null; String realPath = location.substring(5); String classPath = 'classpath:config/' + realPath; return resourceLoader.getResource(classPath); }}

測(cè)試:

DefaultResourceLoader resourceLoader=new DefaultResourceLoader();resourceLoader.addProtocolResolver(new MyProtocolResolver());Resource resource = resourceLoader.getResource('path:config.txt');InputStream inputStream = resource.getInputStream();StringBuffer out = new StringBuffer();byte[] b = new byte[4096];for (int n; (n = inputStream.read(b)) != -1; ) {out.append(new String(b, 0, n));}System.out.println(out);

由此我們可以通過(guò)實(shí)現(xiàn)ProtocolResolver接口來(lái)定義我們自己的加載資源路徑,也可以自定義自己加載資源路徑的優(yōu)先級(jí)。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 交口县| 赤城县| 建德市| 汶川县| 都匀市| 荥经县| 台山市| 始兴县| 阿坝县| 屏东市| 东乡县| 内乡县| 全州县| 大同县| 万载县| 东兰县| 仁布县| 静安区| 台安县| 叶城县| 崇阳县| 河东区| 临武县| 柘城县| 成武县| 吕梁市| 西乌珠穆沁旗| 克什克腾旗| 蓬莱市| 洪江市| 榆中县| 上犹县| 木里| 中宁县| 资阳市| 湟源县| 高邑县| 漯河市| 嘉义县| 葫芦岛市| 建水县|