已经有一些帖子看起来相对于此,我经历过它们,但那些没有解决我的问题:主题:我有一个方法和一些逻辑,我必须使用流进行代码优化。我的方法是:(这里我试图以格式化的方式打印电子邮件,即)public static StringBuilder printEmailsListFormat(ArrayList<String> a) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < a.size(); i++) {
if (i % 3 ==0)
{
sb.append(String.format("%-45s", a.get(i)));
sb.append("\n");
}
else
sb.append(String.format("%-45s", a.get(i)));
}
return sb;}我必须优化这段代码,我试了半个小时,甚至没有运气。你能帮我吗?
3 回答
开心每一天1111
TA贡献1836条经验 获得超13个赞
它可以通过以下方式实现ResponseBodyAdvice:
允许在执行一个
@ResponseBody或一个ResponseEntity控制器方法之后但在使用一个主体写入正文之前自定义响应HttpMessageConverter。实现可以直接注册
RequestMappingHandlerAdapter,ExceptionHandlerExceptionResolver或者更可能注释,@ControllerAdvice在这种情况下,它们将被两者自动检测。
所以你可能有类似的东西:
@ControllerAdvicepublic class MyResponseBodyAdvisor implements ResponseBodyAdvice<Object> {
@Override
public boolean supports(MethodParameter returnType,
Class<? extends HttpMessageConverter<?>> converterType) {
return converterType.isAssignableFrom(MappingJackson2HttpMessageConverter.class);
}
@Override
public Object beforeBodyWrite(Object body,
MethodParameter returnType,
MediaType selectedContentType,
Class<? extends HttpMessageConverter<?>> selectedConverterType,
ServerHttpRequest request,
ServerHttpResponse response) {
MyResponseWrapper wrapper = new MyResponseWrapper();
wrapper.setData(body);
return wrapper;
}}哪里MyResponseWrapper是你用来包裹响应有效载荷类。
RISEBY
TA贡献1856条经验 获得超5个赞
您可以使用ResponseBodyAdvice<T>全局拦截响应POJO,然后将其编组为JSON,但这似乎不合适,因为您的每个REST方法都应该根据方法的功能生成不同的消息。此外,无论如何,这会强制您使用一些包装类进行响应。
所以,我想,最好在每种方法中手动将数据(以及状态和消息)包装到响应中
添加回答
举报
0/150
提交
取消
