日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot AOP拦截器

發布時間:2024/4/13 javascript 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot AOP拦截器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在Spring里面還提供有一種AOP攔截器配置,不過大部分的AOP攔截器都是圍繞著業務層進行攔截處理的。1、建立一個普通的業務操作接口和它的子類:package com.microboot.service;import com.microboot.vo.Member2;public interface IMemberService {public Member2 getInfo(long mid); }package com.microboot.service.impl;import org.springframework.stereotype.Service;import com.microboot.service.IMemberService; import com.microboot.vo.Member2;@Service public class MemberServiceImpl implements IMemberService {@Overridepublic Member2 getInfo(long mid) {Member2 vo = new Member2();vo.setMid(mid);vo.setName("KING");vo.setSalary(50000.00);return vo;}}現在業務層的操作完成之后隨意去修改控制層,讓控制層去完成業務層的調用。 package com.microboot.controller;import javax.annotation.Resource;import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody;import com.microboot.service.IMemberService; import com.microboot.util.controller.AbstractBaseController; import com.microboot.vo.Member;@Controller public class MemberController extends AbstractBaseController{@Resourceprivate IMemberService memberService;@RequestMapping(value = "/member_get", method = RequestMethod.GET)@ResponseBodypublic Object get(long mid) {return this.memberService.getInfo(mid);}}http://localhost/member_get?mid=100{"mid":100,"name":"KING","age":null,"birthday":null,"salary":50000.0} 3、現在的業務層處理只是一個純粹的調用而已,但是現在希望對調用的過程進行攔截處理,所以要想實現這樣的處理,那么久需要引入新的開發依賴包,修改pom.xml配置文件:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency> 4、編寫一個AOP攔截的控制程序類。package com.microboot.config;import java.util.Arrays;import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component;@Aspect @Component // 此時定義有一個業務層的攔截處理 public class ServiceAspect {private Logger log = LoggerFactory.getLogger(ServiceAspect.class);private final String POINT_CUT = "execution(* com.microboot..service..*.*(..))";@Around(POINT_CUT)public Object aroundInvoke(ProceedingJoinPoint point)throws Throwable {this.log.info("【*** Service-Before ***】 執行參數: " + Arrays.toString(point.getArgs()));// 進行具體業務調用Object obj = point.proceed(point.getArgs());this.log.info("【*** Service-After ***】返回結果: " + obj);return obj;} } 對于WEB攔截可以使用攔截器,而對于業務層的攔截可以使用Aspect表達式結合AOPhttp://localhost/member_get?mid=100【*** MyInterceptor.preHandle ***】MemberController 【*** Service-Before ***】 執行參數: [100] 【*** Service-After ***】返回結果: Member2 [mid=100, name=KING, age=null, birthday=null, salary=50000.0] 【*** MyInterceptor.postHandle ***】MemberController 【*** MyInterceptor.postHandle ***】null 【*** MyInterceptor.afterCompletion ***】攔截處理完畢

?

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的SpringBoot AOP拦截器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。