第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 MockBean 清理 Spring Context 緩存失敗 loadLibrary

使用 MockBean 清理 Spring Context 緩存失敗 loadLibrary

拉丁的傳說 2023-09-27 17:28:24
我有一個使用https://github.com/scijava/native-lib-loader加載庫的配置類(這很棒)。不幸的是,使用@MockBean它時會強(qiáng)制刷新上下文緩存。我不知道為什么,但我不能跑NativeLoader.loadLibrary("my-lib")兩次,因?yàn)槲褾ileNotFoundException: The process cannot access the file because it being used by another process第二次就得到了。如何使配置在測試期間運(yùn)行一次或使 NativeLoader 加載我的庫兩次?
查看完整描述

2 回答

?
慕斯709654

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個贊

我沒有NativeLoader.loadLibrary("my-lib")使用 spring 的生命周期鉤子,而是使用靜態(tài)上下文。


static {

? ? try {

? ? ? ? NativeLoader.loadLibrary("my-lib")

? ? } catch (IOException ex) {

? ? ? ? throw new ExceptionInInitializerError(ex);

? ? }

}

最主要的是使用ExceptionInInitializerError它是為這種靜態(tài)上下文初始化而構(gòu)建的。


因此,當(dāng)使用時@MockBean,spring 確實(shí)在每個測試中運(yùn)行@PostConstruct(因?yàn)樗鼞?yīng)該清除模擬組件中的應(yīng)用程序上下文),但庫的加載只發(fā)生一次。


查看完整回答
反對 回復(fù) 2023-09-27
?
溫溫醬

TA貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個贊

嘗試延遲加載,以便僅在真正需要時(即在調(diào)用其某些方法之前)才有效加載庫。

1)根據(jù)邏輯的復(fù)雜性,將 bean 定義為 @Lazy 可以提供幫助。

2)如果這不是你的情況,手動實(shí)現(xiàn)延遲加載會有所幫助。例如,您可以使用代理,僅在第一次調(diào)用其中一個方法時才加載庫。

3) 可能需要對應(yīng)用程序的邏輯進(jìn)行一些修改,以推遲加載庫的代碼的使用。


查看完整回答
反對 回復(fù) 2023-09-27
  • 2 回答
  • 0 關(guān)注
  • 173 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號