Aop概述
Spring 中 Aop的理解:
AOP:将那些与业务无关,却与业务模块所共同调用的逻辑(例如事务处理,日志管理,权限管理等) 封装成一个可重用的模块,这个模块被称为"切面",便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。
如上举例所示:
如上图举例所示,一个理发流程下来,除了托尼老师剪头操作有所不同之外,在整个理发的流程中,排队,洗头,吹头,付款等流程都可以抽取出来,封装为方法进行调用,以减少代代码的冗余度。但即使是封装好的代码,在重复调用的情况下,代码冗余度又会提高。如此就有了AOP的使用场景,通过构造切面的方式,将这些使用场景作为切点,代理执行重复的代码,即减少了代码冗余,也有效避免的封装好的代码的重复调用,将除了托尼老师剪发这个核心功能模块之外的流程,全部进行代理。这就是aop与封装代码的不同之处,方法增强且并非重复调用。