你可以编写自己的http消息转换器。由于您使用的是弹簧启动,因此很容易:只需从AbstractHttpMessageConverter
扩展您的自定义转换器并用@Component
注释标记该类。
从spring docs:
您可以通过简单地在Spring引导上下文添加该类型的豆贡献额外的转换器。如果您添加的bean是默认包含的类型(例如用于JSON转换的MappingJackson2HttpMessageConverter),那么它将替换默认值。
这里是一个简单的例子:
@Component
public class Converter extends AbstractHttpMessageConverter<Object> {
public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
@Inject
private ObjectMapper objectMapper;
public Converter(){
super(MediaType.APPLICATION_JSON_UTF8,
new MediaType("application", "*+json", DEFAULT_CHARSET));
}
@Override
protected boolean supports(Class<?> clazz) {
return true;
}
@Override
protected Object readInternal(Class<? extends Object> clazz,
HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {
return objectMapper.readValue(decrypt(inputMessage.getBody()), clazz);
}
@Override
protected void writeInternal(Object o, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
outputMessage.getBody().write(encrypt(objectMapper.writeValueAsBytes(o)));
}
private InputStream decrypt(InputStream inputStream){
// do your decryption here
return inputStream;
}
private byte[] encrypt(byte[] bytesToEncrypt){
// do your encryption here
return bytesToEncrypt;
}
}
建立一个自定义客户端,做它那里调用有关实现解密getter和setter方法中加密哪些服务.. – johnnynemonic
过吗? –
不会进入或扩展AbstractJackson2HttpMessageConverter更具体,因为这是建立json响应的地方,以及刷新之前的最后一点? – bigbadmouse