属性文件如下所示:
url1=path_to_binary1 url2=path_to_binary2
根据这个我尝试以下方法:
@Component @EnableConfigurationProperties public class ApplicationProperties { private Map<String, String> pathMapper; //get and set }
在另一个组件中,我自动连接了ApplicationProperties:
@Autowired private ApplicationProperties properties; //inside some method: properties.getPathMapper().get(appName);
产生NullPointerException。
NullPointerException
如何纠正?
我有正确的根据user7757360的建议:
@Component @EnableConfigurationProperties @ConfigurationProperties(prefix="app") public class ApplicationProperties {
和属性文件:
app.url1=path_to_binary1 app.url2=path_to_binary2
仍然不起作用
@Component @EnableConfigurationProperties @ConfigurationProperties(prefix="app") public class ApplicationProperties { private Map<String, String> app;
里面application.properties:
application.properties
NullPointerException可能是空的ApplicationProperties。
ApplicationProperties
所有自定义属性都应加注解@ConfigurationProperties(prefix="custom")。之后,必须在您的主类(具有main方法的类)上添加@EnableConfigurationProperties(CustomProperties.class)。对于自动完成,您可以使用:
@ConfigurationProperties(prefix="custom")
@EnableConfigurationProperties(CustomProperties.class)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
如果使用@ConfigurationProperties不带前缀,则仅使用字段名称。您的属性中的字段名称。就您而言path- mapper,接下来您具体key和value。例:
@ConfigurationProperties
path- mapper
key
value
path-mapper.key=value
在更改自己的属性后,请记住您需要重新加载应用程序。例:
https://github.com/kchrusciel/SpringPropertiesExample