概述
每个模块的核心功能都是为特定业务领域提供服务, 但是这些模块都需要类似的辅助功能, 例如安全和事务管理。如果要重用通用功能的话, 最常见的面向对象技术是继承(inheritance) 或委托(delegation) 。 但是, 如果在整个应用中都使用相同的基类,继承往往会导致一个脆弱的对象体系; 而使用委托可能需要对委托对象进行复杂的调用。
切面提供了取代继承和委托的另一种可选方案, 而且在很多场景下更清晰简洁。 在使用面向切面编程时, 我们仍然在一个地方定义通用功能,但是可以通过声明的方式定义这个功能要以何种方式在何处应用, 而无需修改受影响的类。 横切关注点可以被模块化为特殊的类, 这些类被称为切面(aspect) 。 这样做有两个好处: 首先, 现在每个关注点都集中于一个地方, 而不是分散到多处代码中; 其次, 服务模块更简洁, 因为它们只包含主要关注点(或核心功能) 的代码, 而次要关注点的代码被转移到切面中了。
AOP术语
与大多数技术一样, AOP已经形成了自己的术语。 描述切面的常用术语有通知(advice) 、 切点(pointcut) 和连接点(join point)
通知( Advice) ,在AOP术语中, 切面的工作被称为通知。
Spring切面可以应用5种类型的通知:
前置通知(Before) : 在目标方法被调用之前调用通知功能;
后置通知(After) : 在目标方法完成之后调用通知, 此时不会关心方法的输出是什么;
返回通知(After-returning) : 在目标方法成功执行之后调用通知;
异常通知(After-throwing) : 在目标方法抛出异常后调用通知;
环绕通知(Around) : 通知包裹了被通知的方法, 在被通知的方法调用之前
最后
以上就是靓丽花瓣为你收集整理的切面编程的全部内容,希望文章能够帮你解决切面编程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复