请你说一下Spring AOP
AOP,即面向切面编程,是程序设计的一种设计范式,切面是一种模块化机制,用来描述分散在对象,类或方法中的横切关注点,如,对象创建后的时间点,方法调用前后阶段,都可以设立横切关注点
AOP还有几个基本概念,连接点,切点,增强(通知),织入,引介
连接点,是程序执行的的某个位置,这些位置是具有边界性质的特定点,Spring支持方法的连接点
切点可以看作连接点的查询条件,一个切点可以匹配多个连接点,Spring AOP的规则引擎负责解析切点所设定的查询条件,找到对应的连接点
将特定的方法,代码添加到目标连接点上的过程,织入有三种方式,编译期织入,装载期织入,和运行时织入;
Spring 通过***,实现了运行时织入
增强是织入到目标连接点的一段代码。Spring提供了许多增强接口,方便开发人员使用;Advice通常也翻译作通知,可以理解成在某个时间点通知程序做某件事情;而增强,可以理解成在原有的方法上添加了额外代码,达到增强原有方法的效果
引介是一种特殊的增强,它为类添加一些属性和方法,这样可以使某些业务类实现某个接口,成为该接口的实现类