问题标签 [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.
class - 方面问题
嗨,我是 AspectJ 的新手,我想知道是否使用 Aspects 创建类的变体 - 我也会创建该类的另一个实例吗?
spring - 如何在 AOP 中实现策略模式
谁能告诉我如何在 AOP 中实现策略模式?
使用 Spring-AOP 或 AspectJ 的示例将非常有帮助。
java - Spring AOP 与 AspectJ
我的印象是 Spring AOP 最适合用于特定于应用程序的任务,例如安全性、日志记录、事务等,因为它使用自定义 Java5 注释作为框架。然而,AspectJ 似乎对设计模式更友好。
谁能强调在 Spring 应用程序中使用 Spring AOP 与 AspectJ 的各种优缺点?
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 是否需要任何其他配置?
java - 有没有办法改进这个切入点?
我想出了以下用于跟踪方法进入/退出的切入点。它没有损坏,也可以满足我的要求,但是: 1- 我发现它看起来很笨拙或者可能更优雅;2-我不知道它是否防弹。
有什么想法吗?
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 以查看会发生什么,完全相同的错误。
我是否缺少必需的依赖项?这个问题是否有一个共同的原因(我昨天搜索过这个没有找到太多)?非常感激任何的帮助。
spring - Spring - 方面未在运行时应用
我有以下配置:
并具有以下 bean 定义:
我看到该行为在运行时未应用于带@SomeAnnotation
注释的方法。知道为什么吗?
谢谢。
aspectj - AspectJ 中的多态性
我正在尝试确定在 AspectJ 中调度类型的更好方法。假设我正在对具有三种节点的树执行计算。然后我可以编写一个简单的 Java 方法:
或者
或者我可以将一个方法注入每个节点类型:
哪种方法更可取,为什么?
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 访问我想要的所有私有变量,但是当变量名本身在变量中时,我该如何以编程方式进行呢?
谢谢你的帮助..
java - 使用 applicationcontext.getbean 与 @configurable 的优势
与不是由 bean 管理的 bean相比,使用@configurable的优势是什么?有人列出利弊吗?