我很难将我的属性文件(export s.yml)注入到映射中。我在resources文件夹中创建了属性文件,链接到属性源,为property对象创建了一个配置,并使用lombok生成了getter和setter,但仍然没有将任何内容填充到字段映射(field= null)中。我遗漏了什么吗?这是我到目前为止掌握的代码
FieldReplacerProperties.java
@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
@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
export:
fields:
id: number
name: programName
type: contractType
term: contractTerm
...我是如何访问它的
@Autowired
private FieldReplacerConfiguration fieldReplacerConfiguration;
//replace columns with fields
fieldReplacerConfiguration.columnsToFields(columns);发布于 2020-11-05 03:10:47
添加了一个PropertySourceFactory,这解决了这个问题。
@PropertySource变更
@PropertySource(value = "classpath:export-fields.yml", factory = YamlPropertySourceFactory.class)YML工厂
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);
}
}发布于 2020-11-05 02:54:18
Spring从application.properties (或yml)加载属性。尝试将属性从export s.yml移动到application.yml
https://stackoverflow.com/questions/64689182
复制相似问题