·
什么是AOP:面向切面编程(AOP)是面向对象编程(OOP)补充的另一种提供思考程序结构补充。在OOP中模块化的关键单元是类,而在AOP模块的单位是一个切面。
在代码执行过程中,动态嵌入其他代码。将交叉业务逻辑封装成切面,利用AOP的功能将切面织入到主业务逻辑中。所谓交叉业务逻辑是指,通用的、与主业务逻辑无关的代码,如安全检查,事物,日志等。若不使用AOP,则会出现代码纠缠,即交叉业务逻辑与主业务逻辑混合在一起。这样,会使业务逻辑变得混杂不清。
AOP是对OOP的补充和完善,OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能(有A、B、C三个方法,需要在调用这三个方法的前、后都要打印一个日志,一般人会在每一个方法的开始和结尾部分都会添加一句日志打印,这样做如果方法多了,就会有很多重复的代码,显得很麻烦。这时可以将打印日志的功能进行封装,然后让它能在指定的地方(比如执行方法前,或者执行方法后)自动的去调用。这样的话,业务功能代码中就不会掺杂这一些其他的代码,所以AOP就是做了这一类的工作。)
AOP的应用场景:
AOP用来封装横切关注点,具体可以在下面的场景中使用:
Authentication 权限
Caching 缓存
Context passing 内容传递
Error handling 错误处理
Lazy loading 懒加载
Debugging  调试
logging, tracing, profiling and monitoring 记录跟踪 优化 校准
Performance optimization 性能优化
Persistence  持久化
Resource pooling 资源池
Synchronization 同步
Transactions 事务
常见的应用场景有日志、事务、数据库操作。