项目里面计划把所有的response打印出来。开始觉得很简单,只要使用一个responseWrapper 把response包装一下就可以了。
开始计划按照项目中的RequestWrapper写一个出来。写的时候发现没有什么头绪,跟request还是很不一样的。
然后找了一下ResponseWrapper 的实现类。然后在spring里面的jar包里面找到ContentCachingResponseWrapper,感觉就是我想要的东西。
用了一下,发现结果的respoinse内容变没了,又搜了一下用法,发现需要在filer 最后调用这个方法。
responseWrapper.copyBodyToResponse();
但是试了一下还是不行。
最后试了很多方法,有些方法可以有返回值,有些没有。并没有什么规律。debug了一天最后也没有找到原因。
最后自己实现了一个ResponseWrapper 重写了。
@Override
public void flushBuffer() throws IOException {
getResponse().flushBuffer();
}
所有的方法就有返回值了。
自己怀疑是因为使用了Spring security,添加了一些filter导致的。
环境是
spring-boot: 1.5.10.RELEASE
spring-security: 4.2.5.RELEASE
解决Spring Boot ResponseWrapper问题
在Spring Boot项目中,尝试使用ResponseWrapper打印所有response内容,遇到了ContentCachingResponseWrapper使用难题。通过自定义ResponseWrapper并重写flushBuffer()方法,最终解决了response内容丢失的问题。
2028

被折叠的 条评论
为什么被折叠?



