一、原因
controller层使用了restful开发风格,使用了@RestController 或者 @RequsetBody注解。该注解会在controller层方法执行完后,对response进行编写和最终提交,导致在posthandle和afterCompletion拦截中无法操作修改response中cookie。
二、解决
实现ResponseBodyAdvice接口

重写beforeBodyWrite方法,在controller层中方法执行完之后,response提交之前执行,在这里完成cookie的自动续期,然后添加到response中,最后返回body即可。

