Java項目啟動時動態配置實體類注解參數
在Java開發中,尤其使用Easypoi的@excel注解處理Excel導入導出圖片時,經常需要根據不同環境(本地開發、測試環境、生產環境)動態配置savePath參數。本文介紹一種在項目啟動時動態修改Easypoi @Excel注解savePath參數的方法,避免手動修改代碼。
問題:靜態配置savePath的局限性
直接在@Excel注解中硬編碼savePath,例如:@Excel(savePath = “D:upload”),這種靜態配置方式在不同環境下需要修改代碼,部署繁瑣且易出錯。
解決方案:動態獲取并設置savePath
我們可以通過在項目啟動時,讀取系統環境變量或配置文件,動態獲取savePath,然后在Easypoi導入導出之前設置到ImportParams對象中。
以下是一個示例代碼,演示如何動態設置savePath:
立即學習“Java免費學習筆記(深入)”;
import org.apache.poi.ss.usermodel.Workbook; import org.jeecg.common.util.oConvertUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.ExcelImportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.ImportParams; import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; import java.io.File; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; @Service public class EasypoiService { @Value("${easypoi.savePath}") private String savePath; public void exportExcel(List<?> list, Class<?> pojoClass, String fileName) throws Exception { ExportParams exportParams = new ExportParams("標題", "子標題"); Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list); File savefile = new File(savePath + fileName + ".xls"); FileOutputStream fos = new FileOutputStream(savefile); workbook.write(fos); fos.close(); } public List<?> importExcel(Class<?> pojoClass, String filePath) throws Exception { ImportParams importParams = new ImportParams(); importParams.setSaveUrl(savePath); // 動態設置savePath return ExcelImportUtil.importExcel(new File(filePath), pojoClass, importParams); } }
代碼說明:
- 使用@Value(“${easypoi.savePath}”)注解從配置文件(例如application.yml或application.properties)中讀取easypoi.savePath屬性,將其賦值給savePath變量。
- 在exportExcel和importExcel方法中,將savePath變量用于設置ExportParams和ImportParams對象的路徑參數。
配置文件示例 (application.yml):
通過這種方式,只需修改配置文件即可改變savePath,無需重新編譯代碼,方便在不同環境中部署。 記得根據你的實際項目結構和環境調整路徑。 如果使用其他配置方式,例如環境變量,則需要相應修改代碼以讀取環境變量的值。
這種方法比直接在代碼中硬編碼路徑更靈活,更易于維護。 它利用了spring框架的依賴注入功能,將配置與代碼解耦,提高了代碼的可維護性和可重用性。 同時,也避免了直接使用絕對路徑帶來的潛在問題。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END