Spring AOP 一般用在啥场景中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring AOP 一般用在啥场景中相关的知识,希望对你有一定的参考价值。

AOP,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Struts2的拦截器设计就是基于AOP的思想,是个比较经典的例子。

在不改变原有的逻辑的基础上,增加一些额外的功能。代理也是这个功能,读写分离也能用aop来做。

扩展资料:

AOP/OOP区分

AOP、OOP在字面上虽然非常类似,但却是面向不同领域的两种设计思想。OOP(面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。

而AOP则是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。这两种设计思想在目标上有着本质的差异。

参考资料来源:百度百科-AOP (面向切面编程)

参考技术A   AOP是Aspect Oriented Programing的简称,面向切面编程。AOP适合于那些具有横切逻辑的应用:如性能监测,访问控制,事务管理、缓存、对象池管理以及日志记录。AOP将这些分散在各个业务逻辑中的代码通过横向切割的方式抽取到一个独立的模块中。AOP 实现的关键就在于 AOP 框架自动创建的 AOP 代理,AOP 代理则可分为静态代理和动态代理两大类,其中静态代理是指使用 AOP 框架提供的命令进行编译,从而在编译阶段就可生成 AOP 代理类,因此也称为编译时增强;而动态代理则在运行时借助于 JDK 动态代理、CGLIB 等在内存中“临时”生成 AOP 动态代理类,因此也被称为运行时增强。
  代理对象的方法 = 增强处理 + 被代理对象的方法
  Spring AOP 则采用运行时生成 AOP 代理类,因此无需使用特定编译器进行处理。由于 Spring AOP 需要在每次运行时生成 AOP 代理,因此性能略差一些。
  AOP使用场景
  AOP用来封装横切关注点,具体可以在下面的场景中使用
  Authentication 权限
  Caching 缓存
  Context passing 内容传递
  Error handling 错误处理
  Lazy loading 懒加载
  Debugging 调试
  logging, tracing, profiling and monitoring 记录跟踪 优化 校准
  Performance optimization 性能优化
  Persistence 持久化
  Resource pooling 资源池
  Synchronization 同步
  Transactions 事务
参考技术B 我们主要用来事务控制,比如运行日志,权限控制等,除此以为,aop在模块的耦合,及管理,功能升级方面多有很好的用途 参考技术C 对一个方法或功能做 前置处理或后置处理

以上是关于Spring AOP 一般用在啥场景中的主要内容,如果未能解决你的问题,请参考以下文章

Spring入门教程:@Transactional事务失效常见场景

Spring入门教程:@Transactional事务失效常见场景

Spring入门教程:@Transactional事务失效常见场景

Spring 事务失效的7种场景

BlockingQueue和List 有啥区别,BlockingQueue用在啥场景下

在C语言的多线程编程中一般volatile应该用在啥地方?