默认的spring boot项目目录架构,在resources文件夹下面创建一个parkSpace.properties配置文件,但是,我现在使用代码:
InputStream in = new BufferedInputStream(new FileInputStream(“parkSpace.properties”));
启动项目执行到这里的时候,并不能找到这个文件,请问这种具体的路径该怎么填写才能让FileInputStream找到文件路径呢 谢谢
默认的spring boot项目目录架构,在resources文件夹下面创建一个parkSpace.properties配置文件,但是,我现在使用代码:
InputStream in = new BufferedInputStream(new FileInputStream(“parkSpace.properties”));
启动项目执行到这里的时候,并不能找到这个文件,请问这种具体的路径该怎么填写才能让FileInputStream找到文件路径呢 谢谢
org.springframework.util.ResourceUtils.getURL("classpath:parkSpace.properties")
试试上面的代码吧。
classpath:parkSpace.properties
该文件存在于CLASSPATH
的根目录,如果你的文件在CLASSPATH
中是有目录的,这里也需要加上如classpath:resource/parkSpace.properties
。
如何辨别文件所在的CLASSPATH
查看输出classes
中文件所在的位置
打开jar
文件查看资源文件所在的位置
如果你通过上述方式无法获取到文件只有2种原因,1你的CLASSPATH
不存在这个文件,2你的路径写的有问题。
这种能获取到配置文件,但是我的初衷是通过在启动的时候只加载一次这个配置文件,而不是每次调用方法的时候都加载一次,然后我找了一下spring boot的一个初始化加载文件成功,但是我还是想在静态代码块或者静态方法里执行加载配置文件,暂时没找到解决办法。
Map<String,String> maps = new HashMap<>();
Properties propFlies = new Properties();
try {
propFlies.load(getClass().getResourceAsStream("/parkSpace.properties"));
Set<String> sets = propFlies.stringPropertyNames();
maps = (Map) propFlies;
}catch (Exception e){
}
此处可以在spring boot加载完后执行一些代码
@Component
public class MyStartupRunner implements CommandLineRunner {
public static Map<String,String> maps = new HashMap<>();
@Override
public void run(String... strings) throws Exception {
Properties propFlies = new Properties();
try {
propFlies.load(getClass().getResourceAsStream("/parkSpace.properties"));
Set<String> sets = propFlies.stringPropertyNames();
maps = (Map) propFlies;
}catch (Exception e){
}
}
}
由于高版本中@ConfigurationProperties去除了locations的属性,有如下的解决方案
@ConfigurationProperties(prefix = "com.data")
@Configuration
@PropertySource(value = "classpath:文件路径.yml")
public class SqlDataConfig {
@Value("${partyUpdate}")
private String partyUpdate;
@Value("${partyInsert}")
private String partyInsert;
3 回答7.5k 阅读✓ 已解决
3 回答3.4k 阅读✓ 已解决
3 回答5.6k 阅读
3 回答2.3k 阅读✓ 已解决
3 回答1.6k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
1 回答1.9k 阅读✓ 已解决
有两种方式,一种是通过
@PropertySource
注解,然后使用@Value
逐个注入配置。另外一种方式是通过
@ConfigurationProperties
注解,通过getter、setter方法注入及获取配置。properties配置