gpt4 book ai didi

java - Spring boot 访问属性文件时出现 java.util.MissingResourceException

转载 作者:行者123 更新时间:2023-11-30 02:28:27 27 4
gpt4 key购买 nike

在 Spring Boot 应用程序中,我有以下代码用于访问属性文件(errors.properties),当我访问代码时,它会给出以下异常:

exception":"java.util.MissingResourceException","message":"Can't find bundle for base name errors.properties

errors.properties 文件位于 src/main/resources/下

下面是代码

@Configuration
@PropertySource("classpath:errors.properties") // tried with both the annotations
@ConfigurationProperties("classpath:errors.properties") // tried with both the annotations
public class ApplicationProperties {

public static String getProperty(final String key) {
ResourceBundle bundle = ResourceBundle.getBundle("errors.properties");
return bundle.getString(key);
}
}

我无法理解为什么它没有拾取资源文件夹下的errors.properties 文件,有人可以帮助我吗?

最佳答案

这个问题不是 Spring Boot 特有的,因为异常是由 ResourceBundle 抛出的。
使用 ResourceBundle.getBundle() 方法时,不应根据 documentation 指定文件的扩展名。 ,它将自动附加。

所以正确的用法是:

ResourceBundle.getBundle("errors");

注意:对于 Spring Boot 中的本地化,您可能应该使用 MessageSource 而不是 Java ResourceBundle。

PropertySource 注释可能有效,否则它会在上下文启动时引发异常(因为ignoreResourceNotFound 未设置为 false),您可以使用 @Value 注释将 error.properties 文件中的值注入(inject)到任何 Spring bean。例如

@Configuration
@PropertySource("classpath:error.properties")
public class ApplicationProperties {

@Value("${property.in.errors.properties}")
private String propertyValue;

@PostConstruct
public void writeProperty() {
System.out.println(propertyValue);
}
}

如果您看不到属性值,请确保您的 ComponentScan 包含此配置。

或者,您可以将环境直接注入(inject)到bean中,并按照Sudhakar的回答使用getProperty()。

关于java - Spring boot 访问属性文件时出现 java.util.MissingResourceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44931710/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com