当前位置: 首页 > 知识库问答 >
问题:

Spring Boot-从属性文件注入映射[重复]

冯星阑
2023-03-14

属性文件如下所示:

url1=path_to_binary1
url2=path_to_binary2

根据这一点,我尝试了以下方法:

@Component
@EnableConfigurationProperties
public class ApplicationProperties {
    private Map<String, String> pathMapper;

    //get and set
}

在另一个组件中,我autowired应用特性:

@Autowired
private ApplicationProperties properties;         
      //inside some method:
      properties.getPathMapper().get(appName);
@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;
app.url1=path_to_binary1
app.url2=path_to_binary2

共有1个答案

陆翰藻
2023-03-14

NullPointerException可能来自emptyApplicationProperties

所有自定义属性都应该在@configurationproperties(prefix=“custom”)中添加注释。之后,必须在主类(带有main方法的类)上添加@enableConfigurationProperties(customproperties.class)。对于自动完成,您可以使用:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

如果使用@configurationproperties而不带前缀,则只使用字段名。属性中的字段名。在您的例子中path-mapper,接下来是特定的keyvalue。示例:

path-mapper.key=value

请记住,在您自己的属性发生更改后,您需要重新加载应用程序。示例:

 类似资料:
  • 我有一个配置YAML(application.yml)文件,其中包含位置数据: 我想加载它,以便它在html选择字段中可用。 我创建了以下类: 然后我通过@Autowire将CountryOptions注入Controller。但是控制器中的国家列表为空。 应用程序的配置由包含以下注释的类提供: 控制器代码 那么-有什么想法为什么国家列表不是从yaml文件创建的吗?

  • 如何使用注释填充值映射,而不在applicationContext中定义任何内容。xml或任何其他xml文件。 我使用的是SpringBoot,它没有任何XML文件,也不需要任何XML文件,所以请不要告诉我用XML等声明任何属性读取器bean。 此外,这是一个属性注入问题-请不要建议使用数据库存储数据-这不是一个答案,对于我的情况也不可能。 此外,我也不能使用YAML(由于部署/操作需求)。 我已

  • 我在@Configuration类中有以下内容 我想检索所有属性作为一个java.util.属性对象或筛选它的前缀使用@Value属性的子集。 我使用的是纯java配置,我只需要以某种方式获取由@Properties tySource配置的属性。Spring环境一次只能获取一个属性。 简而言之,我真正想要的是所有以hibernate为前缀的属性*

  • 并将属性加载到映射中,结果为: 有什么想法如何创建一个映射策略吗?

  • 我在上一篇文章中问过这个问题:Spring Security的SpEL:将值从XML传递到基于Java的SpEL配置。但这还没有解决。我想将xml配置或外部文件中的值注入

  • 问题内容: 我有一个带有以下内容的Spring Boot应用程序-基本上是从这里获取的: 我可以注入特定的值,例如 但是,我想注入整个地图,例如: 那(或类似的东西)可能吗?显然,我可以直接加载yaml,但是想知道Spring是否已经支持了某些东西。 问题答案: 你可以使用插入地图 使用问题中的yaml运行它会产生: 有多种选项可用于设置前缀,控制如何处理缺少的属性等。有关更多信息,请参见java