aop在业务方法的前后增加一些额外操作,不适合做安全过滤。想象你有一个夹层的汉堡包,中间的那层馅是业务方法,切面就是外面的2层面包,如果你不喜欢,你还可以把这2片面包拿掉,换成其他的食物,但他还是切面。我意思是切面是灵活的组件,随意放在业务方法的上面或者下面。
先写一个你们熟悉的controller (里面是业务方法)。
@RestController
public class MyWebController {
@RequestMapping("/first")
public Object first(String name,Integer age) {
System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@方法执行中ing..................");
return "first controller";
}
@RequestMapping("/doError")
public Object error() {
return 1 / 0;
}
}
再写一个切面,切入点是这个controller 。注解@Pointcut 定义切入点,就是作用在哪个业务方法。execution(public * com.cmic.attendance.web.*.*(..)) 是一个表达式,匹配业务方法的路径。第一个*表示方法的返回数据可以是任意类型。最后两个*表示所有类的所有方法。
@Aspect
@Component
public class LogAspect {
@Pointcut("execution(public * com.cmic.attendance.web.*.*(..))")
public void webPointCut(){}
@Before("webPointCut()")
publ

本文介绍了如何在SpringBoot中利用AOP(面向切面编程)进行业务增强,强调了AOP在业务逻辑外添加额外操作的作用,并非用于安全过滤。通过示例展示了创建Controller和切面的步骤,以及@Pointcut定义切入点的表达式用法。在调用first方法时,详细阐述了Before注解、业务方法以及 Around 注解下pjp.proceed()的重要性及其执行顺序。
最低0.47元/天 解锁文章
1440

被折叠的 条评论
为什么被折叠?



