-
切面表达式
查看全部 -
aop应用场景
查看全部 -
5种Advice注解
@Before:前置通知
@After(finally):后置通知,方法执行完之后
@AfterReturning:返回通知,成功执行之后
@AfterThrowing:异常通知,抛出异常之后
@Around:环绕通知
查看全部 -
匹配注解
//匹配方法标注有AdminOnly的注解的方法
@Pointcut("@annotation(com.imooc.demo.security.AdminOnly)")
public void annoDemo(){}
//匹配标注有Beta的类底下的方法,要求的annotation的RetentionPolicy级别为CLASS
@Pointcut("@within(com.google.common.annotations.Beta)")
public void annoWithinDemo(){}
//匹配标注有Repository的类底下的方法,要求的annotation的RetentionPolicy级别为RUNTIME
@Pointcut("@target(org.springframework.stereotype.Repository)")
public void annoTargetDemo(){}
//匹配传入的参数类标注有Repository注解的方法
@Pointcut("@args(org.springframework.stereotype.Repository)")
public void annoArgsDemo(){}
查看全部 -
匹配参数
//匹配任何以find开头而且只有一个Long参数的方法
@Pointcut("execution(* *..find*(Long))"){}
public void demo1(){}
//匹配任何只有一个Long参数的为Long型的方法
@Point cut("args(Long)")
public void demo2(){}
//匹配任何以find开头的而且第一个参数为Long型的方法
@Pointcut("execution(* *..find*(Long,..))")
public void demo3(){}
//匹配第一个参数为Long型的方法
@Pointcut("args(Long,..)")
public void demo4(){}
查看全部 -
匹配对象
//匹配AOP对象的目标对象为指定类型的方法,即DemoDao的aop代理对象的方法
@Pointcut("this(com.imooc.DemoDao)")
pblic void thisDemo(){}
//匹配实现IDao接口的目标对象(而不是aop代理后的对象)的方法,这里即DemoDao的方法
@Pointcut("target(com.imooc.IDao)")
public void targetDemo(){}
//匹配所有以Service结尾的bean里头的方法
@Pointcut("bean(*Service)")
public void beanDemo(){}
查看全部 -
//匹配包/类型
//匹配ProductService类里的所有方法
@Pointcut("within(com.imooc.service.ProductService)")
public void matchType(){}
@Before("matchType")
public void before(){}
//匹配com.imooc包及子包下所有类的方法
@Pointcut("within(com.imooc..*)")
public void matchPackage(){}
查看全部 -
编程范式:面向过程编程、面向对象编程、函数式编程、事件驱动编程、面向切面编程
查看全部 -
1.为什么要引入AOP的编程范式
引入AOP的编程范式去处理那些OOP不能处理的问题或不好处理的问题,例如视频中老师说的权限控制问题。又比如一个方法中要插入数据到两张表中时,这一次操作是同一个事务,要么同时失败,要么同时成功,这时是不能用面向对象(OOP)编程去实现的。
2.AOP的好处以及适用场景是什么?
能够减少大量的重复代码,视频中所言;又如事务控制时,我们只需要在方法上加@transaction就可以在该方法上启用事务机制,如果发生异常,那么事务会进行自动回滚。这样,我们开发人员能够更加的关注业务代码的开发,而不是事务代码的编写。
3.AOP的两大核心是什么?
AOP的两大核心就是分离软件系统功能性需求(核心关注点)和非功能性需求(非核心关注点),业务处理的主要流程将集中在核心关注点处。
查看全部 -
使用SpringAop的注意事项
查看全部 -
Around环绕通知
查看全部 -
Asepct设计
查看全部 -
Datalog注解
查看全部 -
@Cacheable时序图
查看全部 -
缓存@Cacheable
查看全部
举报