首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Springboot @ConfigurationProperties不注入

Springboot @ConfigurationProperties不注入
EN

Stack Overflow用户
提问于 2020-11-04 23:32:53
回答 2查看 514关注 0票数 1

我很难将我的属性文件(export s.yml)注入到映射中。我在resources文件夹中创建了属性文件,链接到属性源,为property对象创建了一个配置,并使用lombok生成了getter和setter,但仍然没有将任何内容填充到字段映射(field= null)中。我遗漏了什么吗?这是我到目前为止掌握的代码

FieldReplacerProperties.java

代码语言:javascript
复制
@Getter
@Setter
@Component
@ConfigurationProperties(prefix = "export")
@PropertySource("classpath:export-fields.yml")
public class FieldReplacerProperties {
    private Map<String, String> fields;

public List<String> columnsToFields(List<String> columns){
        columns.parallelStream().forEach(column -> fields.get(column));
        return columns;
    }

}

FieldReplacerConfiguration.java

代码语言:javascript
复制
@Getter
@Setter
@Configuration
@EnableConfigurationProperties(FieldReplacerProperties.class)
public class FieldReplacerConfiguration {

    @Autowired
    private FieldReplacerProperties fieldReplacerProperties;

    public List<String> columnsToFields(List<String> columns){
        return fieldReplacerProperties.columnsToFields(columns);
    }
}

export-fields.yml

代码语言:javascript
复制
export:
  fields:
    id: number
    name: programName
    type: contractType
    term: contractTerm
    ...

我是如何访问它的

代码语言:javascript
复制
@Autowired
private FieldReplacerConfiguration fieldReplacerConfiguration;
//replace columns with fields
fieldReplacerConfiguration.columnsToFields(columns);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-05 03:10:47

添加了一个PropertySourceFactory,这解决了这个问题。

@PropertySource变更

代码语言:javascript
复制
@PropertySource(value = "classpath:export-fields.yml", factory = YamlPropertySourceFactory.class)

YML工厂

代码语言:javascript
复制
public class YamlPropertySourceFactory implements PropertySourceFactory {

@Override
public PropertySource<?> createPropertySource(String name, EncodedResource encodedResource) {
    YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();
    factory.setResources(encodedResource.getResource());

Properties properties = factory.getObject();

return new PropertiesPropertySource(encodedResource.getResource().getFilename(), properties);

}

}
票数 0
EN

Stack Overflow用户

发布于 2020-11-05 02:54:18

Spring从application.properties (或yml)加载属性。尝试将属性从export s.yml移动到application.yml

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64689182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档