[英]how to register anonymous HealthIndicators in Spring Boot Actuator
[英]How to deserialize Spring Boot actuator environment
我想反序列化由以下方式返回的Spring Boot Environment对象:
我正在使用Jackson的ObjectMapper
:
private static final ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
...
ClientResponse clientResponse = resource.type(MediaType.APPLICATION_JSON).get(ClientResponse.class);
InputStream is = clientResponse.getEntityInputStream();
org.springframework.core.env.Environment e = mapper.readValue(is, org.springframework.core.env.Environment.class);
上面的代码失败,并显示以下错误,这是有道理的:
com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of org.springframework.core.env.Environment, problem: abstract types either need to be mapped to concrete types, have custom deserializer, or be instantiated with additional type information
但是我已经尝试了Environment
类的所有实现( AbstractEnvironment
, MockEnvironment
, StandardEnvironment
, StandardServletEnvironment
),并且它们都失败了。
我应该使用哪个班级?
org.springframework.core.env.Environment
是一个接口。 因此, ObjectMapper
无法猜测要实例化的具体类。 您需要告诉ObjectMapper
使用哪个类。 所以在你的行org.springframework.core.env.Environment e = mapper.readValue(is,org.springframework.core.env.Environment.class);
您需要用一些具体的类替换org.springframework.core.env.Environment.class
。 例如org.springframework.core.env.StandardEnvironment
(取决于实际返回的环境类型)。 否则,将其反序列化以映射:
Map<String, Object> map = mapper.readValue(is,HashMap<String, Object>.class);
然后从那里去
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.