網站首頁 編程語言 正文
通過攔截器只能獲取到controller下的
restcontroller不能通過攔截器實現
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.http.server.ServletServerHttpRequest;
import org.springframework.http.server.ServletServerHttpResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @program: 獲取響應信息 更改響應信息
* @description:
* @author: chen
* @create:
**/
@ControllerAdvice
public class ResponseBodyTest implements ResponseBodyAdvice<R> {
private static final Logger logger = LoggerFactory.getLogger(ResponseBodyTest.class);
@Override
public boolean supports(MethodParameter methodParameter, Class<? extends HttpMessageConverter<?>> aClass) {
return true;
}
//獲取響應信息 修改響應 restResult.put覆蓋響應消息
@Override
public R beforeBodyWrite(R restResult, MethodParameter methodParameter,
MediaType mediaType,
Class<? extends HttpMessageConverter<?>> aClass,
ServerHttpRequest serverHttpRequest,
ServerHttpResponse serverHttpResponse) {
//System.out.println("測試返回");
// 轉換對象
HttpServletRequest request = ((ServletServerHttpRequest) serverHttpRequest).getServletRequest();
HttpServletResponse response = ((ServletServerHttpResponse) serverHttpResponse).getServletResponse();
logger.info("____________________________________________________________");
logger.info(methodParameter.getDeclaringClass().getName());
if ((Boolean) restResult.get("success")){
logger.info(methodParameter.getMethod().getName()+"方法返回值:"+restResult.get("msg"));
}else {
logger.error(methodParameter.getMethod().getName()+"方法返回值:"+restResult.get("msg"));
}
logger.info("------------------------------------------------------------");
//修改響應信息 直接覆蓋掉就可以了 響應類是map
restResult.put("msg","返回信息")
return restResult;
}
}
響應類
package com.molomessage.message.sys.utils;
import java.util.HashMap;
import java.util.Map;
/**
* 返回數據
*
* @author chen
* @date
*/
public class R extends HashMap<String, Object> {
private static final long serialVersionUID = 1L;
public R() {
put("success",true);
put("code", 0);
put("msg","操作成功");
}
public static R error() {
return error(500, "未知異常,請聯系管理員");
}
public static R error(String msg) {
return error(500, msg);
}
public static R error(int code, String msg) {
R r = new R();
r.put("code", code);
r.put("msg", msg);
r.put("success",false);
return r;
}
public static R ok(String msg, Object obj) {
R r = new R();
r.put("success",true);
r.put("msg", msg);
r.put("data", obj);
return r;
}
public static R ok(String msg) {
R r = new R();
r.put("success",true);
r.put("msg", msg);
return r;
}
public static R ok(Map<String, Object> map) {
R r = new R();
r.putAll(map);
return r;
}
public static R ok() {
return new R();
}
public R put(String key, Object value) {
super.put(key, value);
return this;
}
}
原文鏈接:https://blog.csdn.net/weixin_51216079/article/details/120082105
相關推薦
- 2022-06-20 python中的隨機數?Random介紹_python
- 2022-11-07 關于react?父子組件的執行順序_React
- 2023-04-29 Python腳本修改Maya?ASCII文件路徑方法實現_python
- 2022-07-13 File類的基本運用、查找、刪除
- 2022-02-27 解決 idea突然使用debug功能時項目啟動一半卡住沒反應也不報錯
- 2022-08-31 Python?selenium?find_element()示例詳解_python
- 2023-01-17 用Python實現的等差數列方式_python
- 2022-03-03 text-overflow:ellipsis,當對象內文本溢出時顯示省略標記(...)
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支