當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringBoot AOP拦截器
生活随笔
收集整理的這篇文章主要介紹了
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拦截器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot 基础拦截器
- 下一篇: SpringBoot(配置druid数据