ResponseBodyAdvice
实现ResponseBodyAdvice接口,其实是对加了@RestController(也就是@Controller+@ResponseBody)注解的处理器将要返回的值进行增强处理。
其实也就是采用了AOP的思想,对返回值进行一次修改。
-
实现ResponseBodyAdvice接口
//此接口说明对添加了@Controller的类织入一个通知(增强功能) @ControllerAdvice() public class MyResponseBodyAdvice implements ResponseBodyAdvice { @Value("${test.cache.enable}") private Boolean enable; @Autowired private RedisTemplate<String, String> redisTemplate; private static final ObjectMapper MAPPER = new ObjectMapper(); @Override public boolean supports(MethodParameter returnType, Class converterType) { // 开关处于开启状态 是get请求 //使用MethodParameter参数判断注解信息 //符合此Get请求才进行织入通知 return enable && returnType.hasMethodAnnotation(GetMapping.class) } /** *@param body:原controller要返回的内容 */ @Override public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) { if (null == body) { return null; } //TODO //对返回值的改造 return body; } }