下面这两段代码的区别在哪?业务中如何区分使用?String path1 = new ClassPathResource("").getAbsolutePath(); String path2 = getClass().getClassLoader().getResource("").getPath();
时间: 2024-02-20 13:02:30 浏览: 76
springboot动态加载jar包到容器中,并映射为接口
这两段代码的功能都是获取当前项目的根路径。
区别在于:
- 第一种方式使用Spring提供的ClassPathResource类,需要依赖Spring框架,而第二种方式则是使用Java标准库中的ClassLoader类,不需要依赖任何框架。
- 第一种方式返回的是项目的classes目录的绝对路径,而第二种方式返回的是项目的根目录的绝对路径。
业务中如何选择使用呢?
- 如果你的项目中使用了Spring框架,那么可以使用第一种方式。
- 如果你的项目中没有使用Spring框架,或者不想依赖任何框架,那么可以使用第二种方式。
注意:在使用第二种方式时,需要注意路径中可能会包含空格或其他特殊字符,需要进行URL解码。可以使用如下方式进行解码:
```
String path2 = URLDecoder.decode(getClass().getClassLoader().getResource("").getPath(), "UTF-8");
```
阅读全文