AOP为 Aspect Oriented Programming 的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术
在spring AOP中业务逻辑仅仅只关注业务本身,将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码
那么怎么“只关注业务本身”呢?如果需要进行日志记录怎么办呢?
- 预编译
- 运行期动态代理(处理class)
根据方法正则表达式,匹配这类方法进行日志记录,并设置日志记录的位置