java - 理解Spring AOP

标签 java spring aop aspectj

<分区>

我正在使用 Spring 3.0 框架,但还是个新手。谁能用通俗易懂的语言向我解释什么是 AOP 编程? (一个简短的例子肯定会有所帮助)

Spring 如何合并/增强/支持它?

最佳答案

AOP 是一种修改代码库中现有类以美化它们或根据单独定义的规则更改它们的行为的方法。这种修改可以在将类放入 jar/war 之前完成,也可以在加载代码时动态发生。

这个想法是,与其在源代码中找到所有你想修改的代码点并手动修改它们,不如定义规则来确定如何在代码库中找到感兴趣的点,以及你想要什么样的修饰对他们做。这些规则称为方面(AOPA)。

典型的例子是您想获得有关代码库中各种方法的一些计时信息。您可以找到所有感兴趣的方法并在顶部调用

long start = System.currentTimeMillis();

最后做

long end = System.currentTimeMillis();
System.out.println("Method time is: " + (end - start));

但那是:

  1. 可能是一堆作业
  2. 临时的,你不想搞砸你的代码库

您可以改为定义方面,说明您想要修改哪些方法,以及您想要在这些方法的开头和结尾处执行的操作。

当应用 AOP 时,无论是在创建 jar 时,还是在加载类时,就好像您最初以这种方式编写类一样。

关于java - 理解Spring AOP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5589319/

相关文章:

java - Spring Web Flow 可以在非 UI 上下文中使用吗?

java - 改进 GoogleAppEngine Spring Web 应用程序启动时间

java - Java中如何获取抛出异常的方法名

java - 仅提示来自特定 servlet 的(任何)客户端证书

java - Java中的二项式检验

java - 路径遍历、文件上传利用

spring - 如何停止使用 @RabbitListener 消费消息

java - 使用 Spring 或 AspectJ 将基于代码的样式转换为基于注释的 AOP

c# - ASP.NET 的 AOP 工具比较

java - 如何在java中编译包?