是通过预编译方式和运行期动态代理的方式实现不修改源代码的情况下给程序动态统一添加功能的技术。
AOP技术利用一种称为“横切”的技术,剖解开封装对象的内部,将影响多个类的公共行为封装到一个可重用的模块中,并将其命名为Aspect切面。 所谓的切面,简单来说就是与业务无关,却为业务模块所共同调用的逻辑,将其封装起来便于减少系统的重复代码,降低模块的耦合度,有利用未来的可操作性和可维护性。
利用AOP可以对业务逻辑各个部分进行隔离,从而使业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高开发效率。
写UnitTest也会更好写了。
AOP的使用场景主要包括日志记录、性能统计、安全控制、重试、缓存。
通过使用这个可以把我们的代码变得更简洁。
Aop的实现方式通常用两种,一种是静态织入,在程序编译的时候就把代码插进去。另一个是动态织入,在运行时通过创建代理类来拦截方法调用。
在这边我们主要会介绍AspectCore-Framework和AspectInjector, 这两个都是可以用添加Attribute的方式来织入的。