问题标签 [aspectj]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
329 浏览

class - 方面问题

嗨,我是 AspectJ 的新手,我想知道是否使用 Aspects 创建类的变体 - 我也会创建该类的另一个实例吗?

0 投票
2 回答
1658 浏览

spring - 如何在 AOP 中实现策略模式

谁能告诉我如何在 AOP 中实现策略模式?

使用 Spring-AOP 或 AspectJ 的示例将非常有帮助。

0 投票
8 回答
83110 浏览

java - Spring AOP 与 AspectJ

我的印象是 Spring AOP 最适合用于特定于应用程序的任务,例如安全性、日志记录、事务等,因为它使用自定义 Java5 注释作为框架。然而,AspectJ 似乎对设计模式更友好。

谁能强调在 Spring 应用程序中使用 Spring AOP 与 AspectJ 的各种优缺点?

0 投票
3 回答
3497 浏览

jpa - 在 Spring dm Server 1.x 中使用 EclipseLink JPA 时出现 Aspectj 加载时间编织的问题

我试图让 EclipseLink JPA 在 Spring dm Server OSGi 环境中工作。

从 Spring Enterprise Bundle Repository 下载的相关框架和库包括:

  • dm 服务器 1.0.2.SR02
  • AspectJ 运行时 1.6.3
  • AspectJ 韦弗 1.6.3
  • Spring 框架 2.5.6.A
  • Eclipse 持久性 1.1.0
  • Javax 持久性 API 1.99.0

我遵循与PetClinic-1.5.0示例中介绍的相同结构来设置 EclipseLink JPA。一切正常,直到启用延迟获取(这需要代理对象)。

启用延迟获取后,以下错误表明 load-time-weaving 无法正常工作。

---- (为便于阅读而截断)

异常 [EclipseLink-60] (Eclipse Persistence Services - 1.1.0.r3634):org.eclipse.persistence.exceptions.DescriptorException 异常描述:方法 [_persistence_setcustomer_vh] 或 [_persistence_getcustomer_vh] 未在对象 [net.fractech] 中定义.fds.backoffice.Job]。内部异常:java.lang.NoSuchMethodException:net.fractech.fds.backoffice.Job._persistence_getcu stomer_vh() 映射:org.eclipse.persistence.mappings.OneToOneMapping[customer] 描述符:RelationalDescriptor(net.fractech.fds.backoffice.J ob --> [DatabaseTable(JOBS)])


这表明 _persistence_getcustomer_vh() 和 _persistence_setcustomer_vh() 方法没有自动编织到 Job 域对象中。

问题

1.) 我如何确定 load-time-weaving 是否真的有效;此外,我如何记录启动了哪个加载时间编织代理和编织器?如何将开关传递给此编织器以使其输出调试信息?

我假设我从 <context:load-time-weaver aspectj-weaving="on" /> 开始加载时间编织

2.) 很多搜索显示我在使用dm Server时不需要将-javaagent参数传递给jvm。这个对吗?

3.) 我通过断言 com.springsource.org.eclipse.persistence;version="[1.1.0,1.1.0]";import-scope 确保我在另一个包中的域对象可以访问 Eclipse 持久性类: =我的 eclipselink 包中的应用程序,并包括 PAR 中的所有应用程序包。在 Spring dm Server 中启用 EclipseLink JPA 是否需要任何其他配置?

0 投票
1 回答
238 浏览

java - 有没有办法改进这个切入点?

我想出了以下用于跟踪方法进入/退出的切入点。它没有损坏,也可以满足我的要求,但是: 1- 我发现它看起来很笨拙或者可能更优雅;2-我不知道它是否防弹。

有什么想法吗?

0 投票
3 回答
6507 浏览

java - java.lang.NoClassDefFoundError: ProceedingJoinPoint

我们有许多 Web 服务客户端应用程序,它们在我们的主要面向客户的应用程序和后端 Web 服务之间进行接口。这些 Web 服务应用程序生成自己的 JAXWS 存根代码以直接与 Web 服务和实现代码交互,从而在 JAXWS 代码和希望使用它的任何应用程序之间提供一个干净的接口。在过去的几周里,我们遇到了一些小问题,但大部分都已解决。

当需要将这些集成到面向客户的应用程序中时,我们遇到了许多问题,主要集中在 JDK1.5 和 1.6 不兼容。这些现在已经解决了,但是我们遇到了另一个我们无法解决的问题。Web 服务客户端使用 AOP 设置常见的东西,例如标头凭据、异常处理和限制:

每个方面都引用一个 POJO bean,这些 bean 包括配置中声明的方法,方法参数类型为 org.aspectj.lang.ProceedingJoinPoint,用于提取我正在拦截的方法的参数。

对于每个 Web 服务客户端,我们都有其中一个(在 applicationContext-webservicename.xml 中)。此 xml 文件包含在打包的 JAR 中,该 JAR 包含在面向客户的应用程序中,并导入到由面向客户的应用程序的 web.xml 加载的主 applicationContext.xml 中。

我们对这些 Web 客户端进行了许多单元测试,它们都通过了,证明它们各自没有问题。当所有服务都包含在面向客户的应用程序中时,我们会在启动时收到 java.lang.NoClassDefFoundError: ProceedingJoinPoint 异常(我们使用的是带有 JDK1.5.0_17 的 tomcat 5.5)。

我在 JavaDoc 中查找 java.lang.NoClassDefFoundError 以防万一它有特殊含义,看起来 JVM 认为该类不存在。然后我寻找包含它声称找不到的类(aspectjrt-1.5.4.jar 和 aspectjweaver-1.5.4.jar)的 jar,这些类有重复,所以我尝试依次删除每个 jar 以查看会发生什么,完全相同的错误。

我是否缺少必需的依赖项?这个问题是否有一个共同的原因(我昨天搜索过这个没有找到太多)?非常感激任何的帮助。

0 投票
2 回答
3120 浏览

spring - Spring - 方面未在运行时应用

我有以下配置:

并具有以下 bean 定义:

我看到该行为在运行时未应用于带@SomeAnnotation注释的方法。知道为什么吗?

谢谢。

0 投票
1 回答
163 浏览

aspectj - AspectJ 中的多态性

我正在尝试确定在 AspectJ 中调度类型的更好方法。假设我正在对具有三种节点的树执行计算。然后我可以编写一个简单的 Java 方法:

或者

或者我可以将一个方法注入每个节点类型:

哪种方法更可取,为什么?

0 投票
1 回答
1885 浏览

reflection - 如何通过 AspectJ 中的特权 Aspect 以编程方式访问私有成员?

我想知道是否可以在 AspectJ 中执行以下操作。我正在向 RubyObject 类的每个对象添加一个方法 .inspect()。该方法应该吐出一个字符串,如 #(CompleteClassName, var1=val1, var2=val2, ...)

到目前为止一切顺利, this.getClass().getFields() 让我得到了我想要的所有可见字段, this.getClass().getDeclaredFields() 加上 Modifier.isPrivate(field.getModifiers())) 给了我一个列表所有的私人领域..

这里的问题是我无法像使用可见字段那样检索私有字段的值。我想这是正常的,因为我使用的反射 API 不是 AspectJ 的一部分,所以他们不知道我在这里运行所谓的特权方面。

由于我处于特权模式,我可以使用 this.privateVariableName 访问我想要的所有私有变量,但是当变量名本身在变量中时,我该如何以编程方式进行呢?

谢谢你的帮助..

0 投票
2 回答
2499 浏览

java - 使用 applicationcontext.getbean 与 @configurable 的优势

与不是由 bean 管理的 bean相比,使用@configurable优势是什么?有人列出利弊吗?