Springboot使用攔截器記錄

概述

關(guān)于在使用Springboot的使用過程中,對于Spring中的aop面向切面編程中的幾個主要使用場景做了一些記錄

1. Springboot 中配置攔截器

攔截器中用到bean注入時焕毫,需要提前加載bean注解(LoginInterceptor為自己編寫的登錄攔截器)
@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {

    @Bean
    public LoginInterceptor getLoginInterceptor() {
        return new LoginInterceptor();
    }

    //添加攔截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(getLoginInterceptor()).addPathPatterns("/**");
        super.addInterceptors(registry);
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        super.addResourceHandlers(registry);
    }

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        super.addCorsMappings(registry);
    }

Springboot中的攔截器實現(xiàn)HandlerInterceptor树肃,重寫里面的幾個方法:
public class LoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
        String url = httpServletRequest.getRequestURI();
        //處理一些路徑的放行
    }

    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {

    }
}

2.異常處理器(全局異常處理)

@ControllerAdvice
public class ExceptionHandler {

    @org.springframework.web.bind.annotation.ExceptionHandler(value = Exception.class)
    @ResponseBody
    public Response handle(Exception e) {
        if (e instanceof BusinessException) {
            return HttpUtil.respondFail(((BusinessException) e).getCode(), e.getMessage());
        } else if (e instanceof NullPointerException) {
            e.printStackTrace();
            return HttpUtil.respondFail(500, "服務(wù)器繁忙");
        }
        e.printStackTrace();
        return HttpUtil.respondFail(500, "服務(wù)器開小差了");
    }
}

3.使用aop實現(xiàn)統(tǒng)一日志記錄打印

@Aspect
@Component
public class HttpAspect {
    private static Logger logger = LoggerFactory.getLogger(HttpAspect.class);

    // 定義切點Pointcut
    @Pointcut("execution(* com.*.controller..*.*(..))")
    public void logHttp() {
    }

    @Around("logHttp()")
    public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
        RequestAttributes ra = RequestContextHolder.getRequestAttributes();
        ServletRequestAttributes sra = (ServletRequestAttributes) ra;
        HttpServletRequest request = sra.getRequest();

        String url = request.getRequestURL().toString();
        String method = request.getMethod();
        String uri = request.getRequestURI();
        String queryString = request.getQueryString();
        logger.info("請求開始, 各個參數(shù), url: {}, method: {}, uri: {}, params: {}", url, method, uri, queryString);

        // result的值就是被攔截方法的返回值
        Object result = pjp.proceed();
        Gson gson = new Gson();
        logger.info("請求結(jié)束,controller的返回值是 " + gson.toJson(result));
        return result;
    }

}

Created By 2018 - 04 -12

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末骏全,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌芭概,老刑警劉巖岔擂,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件位喂,死亡現(xiàn)場離奇詭異,居然都是意外死亡乱灵,警方通過查閱死者的電腦和手機塑崖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來痛倚,“玉大人规婆,你說我怎么就攤上這事〔跷龋” “怎么了抒蚜?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長耘戚。 經(jīng)常有香客問我嗡髓,道長,這世上最難降的妖魔是什么收津? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任饿这,我火速辦了婚禮,結(jié)果婚禮上撞秋,老公的妹妹穿的比我還像新娘长捧。我一直安慰自己,他們只是感情好吻贿,可當我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布串结。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪肌割。 梳的紋絲不亂的頭發(fā)上卧蜓,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天,我揣著相機與錄音声功,去河邊找鬼烦却。 笑死,一個胖子當著我的面吹牛先巴,可吹牛的內(nèi)容都是我干的其爵。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼伸蚯,長吁一口氣:“原來是場噩夢啊……” “哼摩渺!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起剂邮,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤摇幻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后挥萌,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绰姻,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年引瀑,在試婚紗的時候發(fā)現(xiàn)自己被綠了狂芋。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡憨栽,死狀恐怖帜矾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情屑柔,我是刑警寧澤屡萤,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站掸宛,受9級特大地震影響死陆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜旁涤,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一翔曲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧劈愚,春花似錦、人聲如沸闻妓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽由缆。三九已至注祖,卻和暖如春猾蒂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背是晨。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工肚菠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人罩缴。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓蚊逢,卻偏偏與公主長得像,于是被迫代替她去往敵國和親箫章。 傳聞我的和親對象是個殘疾皇子烙荷,可洞房花燭夜當晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)檬寂,斷路器终抽,智...
    卡卡羅2017閱讀 134,665評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,180評論 25 707
  • 上午的時候數(shù)學老師在教學群里面發(fā)了一行字,“一個大二快進入大三的學生桶至,做作業(yè)除了會抄襲答案昼伴,什么都不會,說出來都丟...
    droid1277閱讀 224評論 0 2
  • 孩子镣屹,我希望你自始至終都是一個理想主義者圃郊。 你可以是農(nóng)民,可以是工程師野瘦,可以是演員描沟,可以是流浪漢,但你必須是個理想...
    大叔是個loli控閱讀 570評論 0 0
  • 你像只蝴蝶在天上飛 飛來飛去飛不到我身邊 我只能遠遠癡癡望著你 這是男人眼中仰望的美麗花蝴蝶,女人如花似美麗翩...
    溪水音閱讀 439評論 2 12