SpringBoot打成jar包后,获取不到读取resources⽬录下⽂件路
径的问题
问题描述:
Springboot没有打成jar之前,可以成功获取读取resources⽬录下xxx.json⽂件的路径。但是打成jar包后,接⼝调不通,原因是获取不到⽂件的路径。
原因:
在本地进⾏调试时,⽂件是真实存在于磁盘的某个⽬录。此时通过获取⽂件路径,是可以正常读取的,因为⽂件确实存在。
⽽打包成jar以后,实际上⽂件是存在于jar这个⽂件⾥⾯的资源⽂件,在磁盘是没有真实路径的。
所以通过File或者Class().getResource("")⽅法⽆法正确获取⽂件。
解决办法:
1.在⽹上查了相关资料说通过流的⽅式获取,但是测试后还是没有获取到。
2.最终采⽤的是绝对路径的⽅式,获取linux环境下的存放⽂件的具体路径。如:(/usr/local/)spring怎么读取yaml
具体代码:
path:
resourcePath: /usr/local/data
代码:
说明:我使⽤的是⾃定义⼯具类,⾥⾯的⽅法是静态的,所以不能直接通过⼀下这种⽅式。
原因:spring不允许/不⽀持把值注⼊到静态变量中。Spring的@Value依赖注⼊是依赖set⽅法,set⽅法是普通的对象⽅法,static变量是类的属性,static没有set⽅法。
@Value("${sourcePath}")
private static String resourcePath;
做法:
说明:Spring⽀持set⽅法注⼊,可以利⽤⾮静态的setter⽅法注⼊静态常量。注意set⽅法不能有static
private static String resourcePath;
@Value(value = "${sourcePath}")
private void setResourcePath(String resourcePath){
}
注意:class需要加 @Component等注解,这样spring才能扫描到
这是这⼏天做项⽬时,遇到的问题,特此记录。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论