AOP 的全称是 Aspect Oriented Programming,即面向切面编程。是实现功能统一维护的一种技术,它将业务逻辑的各个部分进行隔离(比如安全、日志、事务等),封装成一个切面,然后注入到目标对象(具体业务逻辑)中去。AOP 可以说是对 OOP 的补充,OOP 引入继承、封装、多态的概念建立一种对象层次结果,允许开发者定义纵向关系,但不适合定义航向关系,这样会导致大量代码重复,不利于各个模块重用;而 AOP 将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装成一个可重用的模块,称他为 “切面”,这样就减少了代码重复,降低了模块间的耦合度,提高系统的可维护性。AOP 运用动态代理的技术,在不修改源码的基础上对已有的方法进行增强。
作用:在不修改源码的基础上,对已有方法进行增强。
实现原理:动态代理技术。
优势:减少重复代码、提高开发效率、方便维护
应用场景:事务处理、日志管理、权限控制、异常处理等方面。
两种实现方式:
动态代理:利用截取消息的方式对该消息进行装饰,来取代原来对象行为的执行。
静态织入:引入特定的语法创建 “切面”,使编译器可以在编译期间织入有关 “切面” 的代码。