AspectJ 编译器 (ajc) 与加载时编织

2024-03-19

这里有几个问题:

  • ajc 是否会更改它编译的所有类(甚至是非方面的类)?如果我只编译方面类 ant 然后将它们与常见的类路径放在同一个类路径中会怎样?

  • ajc 编译的项目是否比使用加载时编织的项目执行得更快?

  • 如果我需要编写一个使用 AspectJ 进行跟踪的库,然后我希望该库适用于任何项目,该怎么办?在这种情况下,加载时编织是唯一的选择吗?


  1. ajc(编译时)只会更改受方面影响的类。请记住,ajc 是 Java 编译器的扩展(准确地说,它基于 Eclipse 3.3 的 JDT 编译器)。因此,它将像普通 Java 编译器一样编译所有 Java 类。然后,它将另外编织受某个方面影响的所有类。如果您将方面与非方面分开编译,那么将不会发生编译时编织,并且您的方面不会产生任何影响。但是,您可以将您的方面放在方面路径非方面的编译(如果您的非方面由 ajc 编译)。这将使你的非方面与你的方面交织在一起。
  2. CTW 下的启动时间比 LTW 好得多,但加载所有类后,速度差异应该可以忽略不计。原因是在 LTW 下,所有类在加载时都会被编织。这意味着类加载需要额外的编织步骤,而这在 CTW 下是不需要的。
  3. 不需要。如上所述,您可以将切面添加到第二个项目的切面路径中,然后它们将在编译期间编织。

有关方面路径的更多信息:

http://www.eclipse.org/aspectj/doc/released/devguide/ajc-ref.html http://www.eclipse.org/aspectj/doc/released/devguide/ajc-ref.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AspectJ 编译器 (ajc) 与加载时编织 的相关文章

  • 如何禁用 AspectJ 转储文件“ajcore.txt”

    我有一个 Tomcat Web 应用程序 我在其中使用 AspectJ 进行日志记录和指标 一切看起来都很好 但它不断创建几个文件 例如ajcore 20150310 113255 780 txt在根文件夹中 这个文件也不例外 所以它们完全
  • 服务的任何公共方法的 AOP 切入点表达式

    什么是最简单的切入点表达式 它将拦截所有带有注释的bean的所有公共方法 Service 例如 我希望它会影响该 bean 的两个公共方法 Service public MyServiceImpl implements MyService
  • spectj 中 .. 和 * 是什么意思

    我的理解是 is 0 Many参数和 是一个参数any姓名 它是否正确 spectj 是否支持类似语法args myArg 这是来自 AspectJ 网站 http www eclipse org aspectj doc next prog
  • AspectJ:一个方面内多个建议的执行顺序(优先级)

    类使用编译时编织 想象一下我有一个方面类 Aspect public class SecurityInterceptor Pointcut within org springframework stereotype Controller p
  • AspectJ:自定义 *.aj 文件被忽略

    Why aspectj maven plugin忽略我的AnnotationInheritor aj文件 是我配置有问题吗 我想提建议ItemRepository getById带有自定义注释 Repository public inter
  • 如何使用 Spring AOP 在类上创建一个方面,而不是一个 bean?

    我在一个遗留应用程序上工作 其中 Spring AOP 即ProxyFactoryBean 用来 我需要围绕某个类的方法添加一个方面 这堂课是not然而一颗豆子 AspecjJ 切入点表达式如下所示 execution xyz packag
  • Aspectj 与 Android 库

    我有一个使用方面的库 并且可以通过 Maven 获得 现在我尝试在 Android 应用程序中使用该库 如果我包括这个插件 https github com uPhyca gradle android aspectj plugin在应用程序
  • spectj可以向java.lang.String添加方法吗

    我读过aspectj的一些文章 我知道它可以增强类 这很有吸引力 我有一个非常愚蠢的问题 我找不到明确的答案 spectj可以向java lang String添加方法吗 或者类似的问题 如果我无法获取某些类的源代码 我可以通过aspect
  • Spring AOP中代理的使用

    我正在读一本书 其中谈到启用AspectJSpring AOP 的支持 下面是书中的一段话 要在 Spring IoC 容器中启用 AspectJ 注释支持 您只需定义一个空的 bean 配置文件中的 XML 元素 aop aspectj
  • AspectJ - 更改方法参数的值

    我想要这样的东西 public void doSomething ReplaceFooBar String myString ReplaceFooBar是我的自定义注释 其值应为myString并做一个replaceAll在方法开始执行之前
  • @AspectJ 类级别注释建议,以注释作为方法参数

    如何获取注释作为定义的建议的参数传递 类级注释 是否可以 来自帖子here https stackoverflow com questions 2011089 aspectj pointcut for all methods of a cl
  • 使用 AspectJ 进行 Eclipse 调试单步调试

    我使用 AspectJ 开发工具 插件设置了 Eclipse 我正在尝试调试一些使用 AspectJ 的代码并逐步执行它 但它无法匹配源代码行 因为 AspectJ 在编译时添加了额外的内容 似乎没有人抱怨这似乎是一个重大缺陷 无法调试 所
  • AspectJ Maven 插件无法编译我的项目

    我尝试使用aspectj maven插件使用aspectj编译器来编译项目 然后尝试将类打包到 war 文件中 不幸的是 它不适用于以下配置 pom xml
  • AspectJ 是如何工作的?

    我正在尝试了解 Aspect 的工作原理 我有 C C 背景 但魔法永远不会发生 我知道你可以用注释一些函数 Aspect然后写下Aspect的实现等等 但是 新代码是如何 以及在 什么时间 生成的 假设我没有编辑器 我使用编译java类j
  • AspectJ 加载时间编织不适用于 Spring beans

    我正在开发一个项目 该项目使用 Spring 配置的 Java 而不是 xml 风格来连接依赖项 它还具有分析逻辑 应通过 AspectJ 将其编织到所需的方法上 通过注释 设置正在运行 我可以看到我想要的包中的类正在编织 并且分析信息已从
  • AspectJ - 匹配具有通用参数的方法的切入点

    我有一个接受任何类型作为其参数的通用方法 例如 我想要一个切入点 它与仅以 String 类型作为参数的方法的调用相匹配 最终的要求是将建议执行的范围限制为 字符串 参数 这是我的通用类和方法 public class Param
  • @Aspect 方面的 Spring 自动装配 bean 为 null

    我有以下弹簧配置
  • 具有多个注释的方法上的 AspectJ 切入点

    使用加载时编织 纯 AspectJ 我们有2个注释 Time and Count 以及一些带注释的方法 Time name myMethod1Time Count name myMethod1Count public void myMeth
  • 如何使用 AspectJ 将字段添加到自定义注释的类

    要使用aspectj向某个特定类添加字段 我们需要这样做 package com test public class MyClass private String myField public aspect MyAspect private
  • 带有 @Scheduled Spring 注释的方法的切入点

    我想要一个带有注释的方法的 AspectJ 切入点 Scheduled 尝试了不同的方法但没有任何效果 1 Pointcut execution org springframework scheduling annotation Sched

随机推荐