开发者社区> 问答> 正文

什么是Java Spring AOP?

详细说明一下。

展开
收起
YDYK 2020-04-26 08:45:48 1145 0
2 条回答
写回答
取消 提交回答
  • AOP简介

    概念

    切面(Aspect) :官方的抽象定义为“一个关注点的模块化,这个关注点可能会横切多个对象”。 连接点(Joinpoint) :程序执行过程中的某一行为。 通知(Advice) :“切面”对于某个“连接点”所产生的动作。 切入点(Pointcut) :匹配连接点的断言,在AOP中通知和一个切入点表达式关联。 目标对象(Target Object) :被一个或者多个切面所通知的对象。 AOP代理(AOP Proxy) 在Spring AOP中有两种代理方式,JDK动态代理和CGLIB代理。

    通知(Advice)类型

    前置通知(Before advice) :在某连接点(JoinPoint)之前执行的通知,但这个通知不能阻止连接点前的执行。ApplicationContext中在aop:aspect里面使用aop:before元素进行声明。 后通知(After advice) :当某连接点退出的时候执行的通知(不论是正常返回还是异常退出)。ApplicationContext中在aop:aspect里面使用aop:after元素进行声明。 返回后通知(After return advice) :在某连接点正常完成后执行的通知,不包括抛出异常的情况。ApplicationContext中在aop:aspect里面使用 元素进行声明。 环绕通知(Around advice) :包围一个连接点的通知,类似Web中Servlet规范中的Filter的doFilter方法。可以在方法的调用前后完成自定义的行为,也可以选择不执行。ApplicationContext中在 aop:aspect里面使用 aop:around元素进行声明。 抛出异常后通知(After throwing advice) : 在方法抛出异常退出时执行的通知。 ApplicationContext中在 aop:aspect里面使用 aop:after-throwing元素进行声明。 切入点表达式 :如execution(* com.spring.service. .(..))

    特点

    1、降低模块之间的耦合度

    2、使系统容易扩展

    3、更好的代码复用。

    2020-05-02 09:50:42
    赞同 展开评论 打赏
  • Spring AOP(面向面编程)称赞OOP,因为它还提供模块化。在 OOP 中,关键单元是对象,但在 AOP 键单元中是方面或问题(只需在应用程序中假定独立模块)。某些方面具有集中代码,但其他方面可能会分散或纠结,例如日志记录或事务。这些分散的方面被称为跨领域的关注。跨领域问题是一个可能影响整个应用程序的问题,应该尽可能集中在代码中的一个位置,如事务管理、身份验证、日志记录、安全性等。

    AOP 提供了使用简单可插拔配置在实际逻辑之前、之后或周围动态添加横切问题的方法。它便于在现在和未来维护代码。只需更改配置文件(如果您应用了应用采用 XML 配置的方面),即可添加/删除问题,而无需重新编译完整的源代码。

    Spring AOP 可通过以下 2 种主要方法使用。但广泛使用的方法是弹簧方面J注释样式。

    1)按方面J注释样式 2)由Spring XML 配置样式

    2020-04-26 08:46:14
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载