总结:目录1.三种拦截方法。 2.Slice演示示例项目。 3. 对特征进行切片。 4. 过滤拦截器函数的顺序是哪几个方面。 5. 如果控制层方法或层抛出异常,则过滤拦截器方面也会抛出异常。 序列1、三种拦截方法、过滤拦截器切片、切片2、演示样例工程、自定义命名切片、代码
内容1、Resultful API 中的三种拦截方法、2、演示示例切片(aspect) (springboot项目) 3. slice的特点 (aspect) 4. Filter, Interceptor 拦截器, Aspect 切面工作的顺序 5. 当控制层(controller层)的方法抛出异常时, Filter , Interceptor 、Aspect抛出异常
1. 拦截Resultful API的三种方式 过滤器(Filter) 拦截器(Interceptor) 切片(Aspect) 2. 切片(Aspect) ) Demo示例(springboot项目)
1 . 自定义名为 TimeAspect 的切片。 这是代码:
包 com.xz.springsecuritydemo.aspect;导入 org.aspectj.lang.ProceedingJoinPoint;导入 org.spectj.lang.annotation.*;导入 org.springframework.stereotype.Component;导入 java.util.Date;@ Aspect//声明切面@Component//注入到容器的公共类T中imeAspect { // 当使用 @Before()、@After()、@AfterThrowing()、@AfterReturning()、@Around() 等注解时, // 注解中的表达式决定使用哪种方法/ *。 * * Execute 表示运行 * First * 表示任何返回值 * 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("时间方面开始"); // 获取方法参数 Object[] args = pjp.getArgs(); for (object arg:args) { System.out.println( "方法参数:"+arg); } long startTime = new Date().getTime( ); Object Progress = pjp.proceed(); System.out.println("需要时间的方面:"+(new Date().getTime()-startTime)); " ); 后退和前进。 }}
2. 使用以下代码自定义控件类。
@RestController//表示这个控制器提供RestAPI public 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测试工具发送请求,如下所示。
最后,检查控件。 状态输出信息如下所示:
时间切面开始方法参数:xzquery1======xzaspect 消耗时间:1小时切面结束
5. 输出表明自定义切片已完成。方面拦截器成功。
3.切片(aspect)的特点从上面的例子可以看出,切片(aspect)pect)无法检索有关原始http请求和响应的信息,但它可以检索实际处理请求的方法的参数值。 第四,Filter、Interceptor、Aspect方面的运行顺序是Filter先运行,然后是Interceptor。 拦截器启用,然后Aspect切面启用,最后我们进入Controller方法。 5、如果控制层(即controller层)的方法抛出异常,Filter、Interceptor、Aspect切面抛出异常的顺序是Aspect切面在前。 使用 @ControllerAdvice 自定义异常并使用异常处理类、拦截器和过滤器填充它。 如果都不起作用,最后迁移到 Tomcat
评论前必须登录!
注册