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

在Spring Boot中從類路徑加載文件的示例

 更新時間:2020年10月12日 09:24:30   作者:程序汪布丁  
創(chuàng)建Spring Boot Web應(yīng)用程序時,有時有時需要從類路徑中加載文件;war和jar的加載文件格式是不一樣的,在下面,您將找到在WAR和JAR中加載文件的解決方案。

資源加載器

使用Java,您可以使用當(dāng)前線程的classLoader并嘗試加載文件,但是Spring Framework為您提供了更為優(yōu)雅的解決方案,例如ResourceLoader。

您只需要自動連接ResourceLoader,然后調(diào)用getResource(„somePath“)方法即可。

在Spring Boot(WAR)中從資源目錄/類路徑加載文件的示例

在以下示例中,我們從類路徑中加載名為GeoLite2-Country.mmdb的文件作為資源,然后將其作為File對象檢索。

@Service("geolocationservice") 
public class GeoLocationServiceImpl implements GeoLocationService { 
 private static final Logger LOGGER = LoggerFactory.getLogger(GeoLocationServiceImpl.class); 
 private static DatabaseReader reader = null; 
 private ResourceLoader resourceLoader; 
 @Autowired 
 public GeoLocationServiceImpl(ResourceLoader resourceLoader) { 
  this.resourceLoader = resourceLoader; 
 } @PostConstruct 
 public void init() { 
  try { 
   LOGGER.info("GeoLocationServiceImpl: Trying to load GeoLite2-Country database..."); 
   Resource resource = resourceLoader.getResource("classpath:GeoLite2-Country.mmdb"); 
   File dbAsFile = resource.getFile();   // Initialize the reader 
   reader = new DatabaseReader 
      .Builder(dbAsFile) 
      .fileMode(Reader.FileMode.MEMORY) 
      .build(); 
   LOGGER.info("GeoLocationServiceImpl: Database was loaded successfully."); 
  } catch (IOException | NullPointerException e) { 
   LOGGER.error("Database reader cound not be initialized. ", e); 
  } 
 } 
 @PreDestroy 
 public void preDestroy() { 
  if (reader != null) { 
   try { 
    reader.close(); 
   } catch (IOException e) { 
    LOGGER.error("Failed to close the reader."); 
   } 
  } 
 } 
} 

在Spring Boot(JAR)中從資源目錄/類路徑加載文件的示例

如果您想從Spring Boot JAR中的 classpath加載文件,則必須使用該resource.getInputStream()方法將其作為InputStream檢索。如果嘗試使用resource.getFile()該方法,則會收到錯誤消息,因?yàn)镾pring嘗試訪問文件系統(tǒng)路徑,但無法訪問JAR中的路徑。

@Service("geolocationservice") 
public class GeoLocationServiceImpl implements GeoLocationService { 
 private static final Logger LOGGER = LoggerFactory.getLogger(GeoLocationServiceImpl.class); 
 private static DatabaseReader reader = null; 
 private ResourceLoader resourceLoader; 
 @Inject 
 public GeoLocationServiceImpl(ResourceLoader resourceLoader) { 
  this.resourceLoader = resourceLoader; 
 } @PostConstruct 
 public void init() { 
  try { 
   LOGGER.info("GeoLocationServiceImpl: Trying to load GeoLite2-Country database..."); 
   Resource resource = resourceLoader.getResource("classpath:GeoLite2-Country.mmdb"); 
   InputStream dbAsStream = resource.getInputStream(); // <-- this is the difference 
   // Initialize the reader 
   reader = new DatabaseReader 
      .Builder(dbAsStream) 
      .fileMode(Reader.FileMode.MEMORY) 
      .build(); 
   LOGGER.info("GeoLocationServiceImpl: Database was loaded successfully."); 
  } catch (IOException | NullPointerException e) { 
   LOGGER.error("Database reader cound not be initialized. ", e); 
  } 
 } 
 @PreDestroy 
 public void preDestroy() { 
  if (reader != null) { 
   try { 
    reader.close(); 
   } catch (IOException e) { 
    LOGGER.error("Failed to close the reader."); 
   } 
  } 
 } 
} 

以上就是在Spring Boot中從類路徑加載文件的示例的詳細(xì)內(nèi)容,更多關(guān)于spring boot 加載文件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Spring?MVC DispatcherServlet處理請求過程示例詳解

    Spring?MVC DispatcherServlet處理請求過程示例詳解

    這篇文章主要介紹了Spring?MVC?DispatcherServlet處理請求過程示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • 通過Java實(shí)現(xiàn)中文分詞與文本關(guān)鍵詞提取

    通過Java實(shí)現(xiàn)中文分詞與文本關(guān)鍵詞提取

    這篇文章主要為大家詳細(xì)介紹了如何利用Java實(shí)現(xiàn)中文分詞以及文本關(guān)鍵詞提取功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)學(xué)習(xí)
    2023-06-06
  • Java之SpringCloudAlibaba Sentinel組件案例講解

    Java之SpringCloudAlibaba Sentinel組件案例講解

    這篇文章主要介紹了Java之SpringCloudAlibaba Sentinel組件案例講解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • java中volatile不能保證線程安全(實(shí)例講解)

    java中volatile不能保證線程安全(實(shí)例講解)

    下面小編就為大家?guī)硪黄猨ava中volatile不能保證線程安全(實(shí)例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Spring事務(wù)的七種傳播行為

    Spring事務(wù)的七種傳播行為

    這篇文章主要介紹了Spring事務(wù)的七種傳播行為,文章圍繞主題的相關(guān)資料展開詳細(xì)的內(nèi)容解說,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-04-04
  • 解析Mybatis連續(xù)傳遞多個參數(shù)的方法

    解析Mybatis連續(xù)傳遞多個參數(shù)的方法

    MyBatis是一個支持普通SQL查詢,存儲過程和高級映射的優(yōu)秀持久層框架,這篇文章主要介紹了Mybatis連續(xù)傳遞多個參數(shù)的方法,需要的朋友可以參考下
    2016-08-08
  • Java注解之Elasticsearch的案例詳解

    Java注解之Elasticsearch的案例詳解

    學(xué)會了技術(shù)就要使用,否則很容易忘記,因?yàn)樽匀唤鐗焊筒淮嬖谑裁创a、變量之類的玩意,這都是一些和生活常識格格不入的東西。這篇文章主要介紹了Java中Elasticsearch的案例,感興趣的可以了解一下
    2022-10-10
  • Java實(shí)現(xiàn)獲取銀行卡所屬銀行,驗(yàn)證銀行卡號是否正確的方法詳解

    Java實(shí)現(xiàn)獲取銀行卡所屬銀行,驗(yàn)證銀行卡號是否正確的方法詳解

    這篇文章主要介紹了Java實(shí)現(xiàn)獲取銀行卡所屬銀行,驗(yàn)證銀行卡號是否正確的方法,結(jié)合實(shí)例形式詳細(xì)分析了java判斷銀行卡歸屬地及有效性的原理與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-09-09
  • java整合微信支付功能詳細(xì)示例

    java整合微信支付功能詳細(xì)示例

    這篇文章主要給大家介紹了關(guān)于java整合微信支付功能的相關(guān)資料,支付是一個復(fù)雜且測試起來需要的配置特別復(fù)雜的模塊,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考下
    2023-07-07
  • Java算法實(shí)現(xiàn)楊輝三角的講解

    Java算法實(shí)現(xiàn)楊輝三角的講解

    今天小編就為大家分享一篇關(guān)于Java算法實(shí)現(xiàn)楊輝三角的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01

最新評論

常山县| 石城县| 临漳县| 塔城市| 台前县| 福贡县| 牙克石市| 张家港市| 固镇县| 淳化县| 桐城市| 察雅县| 安岳县| 玉环县| 太仆寺旗| 琼海市| 墨竹工卡县| 高安市| 彰武县| 昌乐县| 大渡口区| 襄城县| 商河县| 沐川县| 望谟县| 蓝田县| 峡江县| 蒙阴县| 滕州市| 英超| 黄骅市| 廊坊市| 西充县| 吕梁市| 庆城县| 灵川县| 焉耆| 探索| 郑州市| 安新县| 班戈县|