摘要:目录一的拦截三种方式二切片的演示示例项目三切片特点四过滤器拦截器切面起作用的顺序五当控制层即层的方法抛异常时,过滤器拦截器切面抛异常的顺序一的拦截三种方式过滤器拦截器切片二切片的演示示例项目自定义一个名称为的切片,代码
1、自定义一个名称为TimeAspect的切片,代码如下:
package com.xz.springsecuritydemo.aspect;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.*;import org.springframework.stereotype.Component;import java.util.Date;@Aspect//声明切面@Component//注入到容器public class TimeAspect { //什么时候起作用 使用注解,例如@Before()、 @After()、@AfterThrowing()、@AfterReturning()、@Around() //在哪些方法上启作用,在注解中使用表达式 /** * execution 表示执行 * 第一个* 表示任何的返回值 * com.xz.springsecuritydemo.modules.sys.controller.SysQueryController 要拦截的类 * .* 表示SysQueryController类中任何一个方法 * (..) 表示SysQueryController类中任何一个方法的任何一个参数 * ProceedingJoinPoint 参数表示当前拦截方法的信息对象 */ @Around("execution(* com.xz.springsecuritydemo.modules.sys.controller.SysQueryController.*(..))") public Object handleConrtollerMethod(ProceedingJoinPoint pjp) throws Throwable { System.out.println("time aspect start"); //获取方法的参数 Object[] args = pjp.getArgs(); for (Object arg:args){ System.out.println("方法的参数:"+arg); } long startTime = new Date().getTime(); Object proceed = pjp.proceed(); System.out.println("aspect 耗时:"+(new Date().getTime()-startTime)); System.out.println("time aspect end"); return proceed; }}
2、自定义一个控制类,代码如下:
@RestController//表示此Controller提供RestAPIpublic class SysQueryController { /** * @RequestMapping 映射http请求url到java方法 * @RequestParam 映射请求参数到java方法的参数 */ @RequestMapping(value = "/user1",method = RequestMethod.GET) public void query1(@RequestParam String username){ System.out.println("query1====="+username); } }
3、测试步骤
启动项目,如下图:
再用postman测试工具发送请求,如下图:
最后查看控制态输出信息,如下图:
time aspect start方法的参数:xzquery1=====xzaspect 耗时:1time aspect end
5、输出第4步的内容表示自定义的切片Aspect拦截器成功。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/119357.html
摘要:四过滤器拦截器切面起作用的顺序先是过滤器起作用然后拦截器起作用然后切面起作用最后进入方法中五当控制层即层的方法抛异常时,过滤器拦截器切面抛异常的顺序先是切面如果使用自定义异常再进入这个处理异常类然后拦截器然后过滤器如果都没处理,最后到 ...
摘要:拦截服务一使用第三方过滤器直接加入项目拦截服务二使用自定义拦截器拦截服务三使用切片完结 Spring拦截服务【一】(SpringBoot使用第三方过滤器Filter直接加入项目) Spring拦截服务【二】(SpringBoot使用自定义拦截器Interceptor) Spring拦截服务【三】(SpringBoot使用切片Aspect)【完结】
摘要:像一样利用注解自定义切片在中,利用注解可以很轻松的利用技术进行事物管理。表明该注解在运行时也是有效的。其中用来声明切片的实现。在这个代码里面,最关键的一步是这个声明与普通的注解式声明切片类似,只是其中表明该切片作用范围为声明的注解作用范围。 像@Transactional一样利用注解自定义aop切片 在spring中,利用@Transactional注解可以很轻松的利用aop技术进行事...
摘要:思考之所以会选择为切入点,是因为通过命名可以看出这是用来构建代理强化对象的地方,并且由于是先将目标类加载到内存中,之后通过修改字节码生成目标类的子类,因此我猜测强化是在目标类实例化后触发的时候进行的。 【干货点】 此处是【好好面试】系列文的第11篇文章。看完该篇文章,你就可以了解Spring中Aop的相关使用和原理,并且能够轻松解答Aop相关的面试问题。更重要的是,很多人其实一看源码就...
摘要:又是什么其实就是一种实现动态代理的技术,利用了开源包,先将代理对象类的文件加载进来,之后通过修改其字节码并且生成子类。 在实际研发中,Spring是我们经常会使用的框架,毕竟它们太火了,也因此Spring相关的知识点也是面试必问点,今天我们就大话Aop。特地在周末推文,因为该篇文章阅读起来还是比较轻松诙谐的,当然了,更主要的是周末的我也在充电学习,希望有追求的朋友们也尽量不要放过周末时...
阅读 998·2021-09-26 09:55
阅读 3532·2021-09-24 10:30
阅读 1343·2021-09-08 09:36
阅读 2534·2021-09-07 09:58
阅读 563·2019-08-30 15:56
阅读 742·2019-08-29 18:32
阅读 3535·2019-08-29 15:13
阅读 1827·2019-08-29 13:49