不发生异常也进行处理,拦截器是对控制组件的处理。
统一记录日志是对针对业务层
拆分记录 日志的功能单独实现,可以通过AOP实现。
权限检查、记录日志、事务管理横跨了业务组件。
target:目标对象,处理业务组件的需求就是目标对象。
使用AOP需要将代码单独封装到一个组件中,封装业务的组件就交Aspect
我们中过程完全是针对 Aspect完成的,所以为面向方面编程。
利用框架进行一个织入的行为weaving 把方面组件的代码,织入到目标对象,这是框架提供的功能。不同框架采用不同的时机。编译时、装载时、运行时。
编译时织入:代码在运行的时候已经织入好了,运行速度快。但因为时机早,运行时的条件还不清楚。
运行时织入:运行时织入,比较灵活。一边运行一遍织入,效率低
连接点JoinPoint织入目标对象位置,织入属性上,构造器上,静态上,成员方法里。
主要做两件事:
声明切点,通过表达式声明。
实现具体通知,具体的织入逻辑
Spring织入程序是代理的方式
示例
首先声明为某一个Bean,让容器去管理,通过@Component说明不属于某特定层。@Aspect声明这是一个方面组件。
需要定义两个内容,第一个切点,织入到那些bean的具体的位置。
业务组件的一开始记录日志,记录日志的格式,用户某某在某一个时刻访问了某功能某方法。