会员登录 - 用户注册 - 设为首页 - 加入收藏 - 网站地图 在Spring Boot中从类路径加载文件!

在Spring Boot中从类路径加载文件

时间:2025-11-04 21:10:16 来源:益强数据堂 作者:IT科技 阅读:458次

在下面,中从载文您将找到在WAR和JAR中加载文件的类路解决方案。

资源加载器使用Java,径加件您可以使用当前线程的中从载文classLoader并尝试加载文件,但是类路Spring Framework为您提供了更为优雅的解决方案,例如ResourceLoader。WordPress模板径加件

您只需要自动连接ResourceLoader,中从载文然后调用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中的云南idc服务商 classpath加载文件,则必须使用该resource.getInputStream()方法将其作为InputStream检索。中从载文如果尝试使用resource.getFile()该方法,类路则会收到错误消息,径加件因为Spring尝试访问文件系统路径,但无法访问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.");             }         }     } } 

(责任编辑:数据库)

推荐内容
  • OnePlus5手机(性能强劲,拍照出色,价格亲民,OnePlus5是你的不二选择)
  • 华硕商务本(华硕商务本性能强劲、稳定可靠,提升工作效率)
  • Avast安全软件的优势与劣势(探索Avast杀毒软件的功能和用户体验)
  • 以恩杰大幻影(探索传奇幕后故事,恩杰大幻影的魅力与创意)
  • 抖音烟花特效电脑教程(让你的视频焕发夺目光彩,掌握抖音烟花特效制作的关键技巧)
  • 探索松下GH5拍照功能的卓越表现(一款强大的相机,让您的创作无限可能)