1.回调思路:

Spring的入门案例4

1.当接口A执行时,需要调用接口B中的add操作,这时程序会执行接口B中的操作,但是接口B中会引入接口A中的业务逻辑,所以程序再次回到接口A进行执行,最终将结果放回。

 

2.AOP高级:

1.问题:什么处理使用AOP

Spring的入门案例4

说明:

AOP的使用是在整个系统之上的,使用了AOP的操作,可以对原有的程序进行来了扩展,让方法更加的丰富。一般会使用AOP

1.事务处理    2.日志收集   3.权限控制  4.异常信息收集

5.根据公司自己的业务逻辑定义。

 

3.通知选取规则

5大通知类型中,环绕通知最为强大,能够控制目标方法的执行。

如果需要记录异常信息,使用异常通知。

其他通知,只能做记录工作,不能做处理

 

4.切入点表达式:

within表达式  粗粒度的只能控制类

Execution(返回值类型 包名.类名.方法名(参数列表))

 

Add(int a)

 

例子1

<aop:pointcut expression=

"execution(int service.UserServiceImpl.add())" id="txPointcut"/>

改切点表达式表示 

返回值为int  包名类名serviceUserServiceImpl   方法为add()的匹配规则

 

例子2

 

<aop:pointcut expression="execution(* service.*.add())" id="txPointcut"/>

规则:返回值值任意, 包名service下子类的add(),只能包含一层,子孙类不行。

 

例子3

<aop:pointcut

expression="execution(* service..*.add())" id="txPointcut"/>

 

规则:方法返回值任意, service包下的所有子孙类的add()

 

例子4    

<aop:pointcut expression=

"execution(* service..*.add(int,String))" id="txPointcut"/>

规则:返回值的类型任意   service子孙包下的add方法参数类型为int,String

 

<aop:pointcut expression=

"execution(* service..*.add(..))" 

id="txPointcut"/>

规则:返回值类型任意   service下的所有子孙类.add方法() (参数任意)

 

例子6

要求返回值为任意的,service包下的全部类的全部方法的任意参数

Execution(* service..*.*(..))

 

简化:

execution(* service..*(..))

 

5.异常通知的异常收集

作用:

在程序中做异常的收集,可以实时监控那些java代码报错,方便后期维护。

 

 

Spring的入门案例4

 

Spring的入门案例4

Spring的入门案例4

注入的顺序,必须位于第一位

 

6.后置通知介绍:

作用:

获取目标方法执行后的返回值结果,并且进行记录时需要使用后置通知。

 

Spring的入门案例4

Spring的入门案例4

 

报错信息:

Spring的入门案例4

 

只有环绕通知添加ProceedingJoinPoint

Spring的入门案例4

 

7.环绕通知的规范

Spring的入门案例4

 

环绕通知中必须添加返回值,否则程序执行获取不到结果。

 

8.多个环绕通知的执行规则

Spring的入门案例4

如果有多个环绕通知,则或先执行下一个通知,如果没有下一个通知,则会执行目标方法

其结构是一种嵌套关系

Spring的入门案例4

9.AOP的注解形式

切面配置的要素:

1.切入点表达式

2.切面对象

3.通知

 

1.开启前面注解

Spring的入门案例4

 

2.注解的使用

Spring的入门案例4

 

 

10.注解中切入点的写法

1.将切入点写入通知内部

@Before(value="execution(* service..*.*(..))")

缺点:如果该切入点需要重复使用,则必须重复写多次

 

2.自定义方法编辑切入点

@Pointcut(value="execution(* service..*.*(..))")

public void pointcut(){}

 

优点:

1.可以实现切入点表达式的复用

2.方便表达式管理

 

11.注解中通知的用法:

Spring的入门案例4

12.如何获取方法的注解:

案例:

权限控制,如果该方法上添加了@privilege注解,则需要进行权限控制.

思路:

1.通过反射调用获取方法注解

2.通过切入点表达式获取

方法:

1.自定义注解

Spring的入门案例4

2.注解的获取

Spring的入门案例4

 

13.权限控制例题

1.用户应该有自己的权限列表,内部保存用户的全部权限

2.当方法执行时需要权限时会与用户列表进行匹配如果满足权限。

方法才能执行如果不满足权限,方法则不能执行。

 

 

 

 

 

 

 

 

相关文章: