我正在开发一个基于Micronaut 2.5.13的应用程序.当我必须将一个字符串值映射到另一个字符串值时,我有一个要求,这样我就可以在我的应用程序逻辑中替换它.
我在application.yaml
中创建了这样的属性
myapp:
mapping:
enabled: true
mappings:
a: b
c: d
我希望在我的服务类中将映射值作为映射读取,如下所示:
import io.micronaut.context.annotation.Value;
import javax.inject.Singleton;
import java.util.Map;
@Context
public class MappingService {
private final boolean mappingEnabled;
private final Map<String, String> mappings;
public MappingService(
@Value("${myapp.mapping.enabled}") boolean mappingEnabled,
@Value("${myapp.mapping.mappings}") Map<String, String> mappings
) {
this.mappingEnabled = mappingEnabled;
this.mappings = mappings;
}
public String mapValue(String key) {
if (mappingEnabled) {
return mappings.getOrDefault(key, key); // If key not found, return the original key
} else {
return key; // Mapping is disabled, return the original key
}
}
}
当我try 运行上面的代码时,出现以下错误:
Error resolving property value [${myapp.mapping.mappings}]. Property doesn't exist
似乎Micronaut无法识别YAML中的映射类型属性.应用程序正在成功读取另一个布尔类型的属性myapp.mapping.enabled
.
对此有何建议?
问候