草庐IT

java - Aspectj 覆盖方法的参数

我正在开发一个方面来检查setter方法的参数并用null值覆盖空字符串。这是我目前的状态:@Before("execution(*de.foo.entity.*.set*(..))&&args(java.lang.String)")publicvoidcheck(finalJoinPointjp){LOGGER.debug(jp.getSignature().toLongString());Object[]args=jp.getArgs();for(inti=0;i不幸的是,覆盖语句args[i]=null;现在可以工作了!有谁知道我应该如何覆盖它?干杯,凯文

java - 是否有能够反编译由 AspectJ 编织的代码的 Java 反编译器(无论是独立的还是 Eclipse 插件)?

我已经扫描了网上的各种相关问题(比如http://www.java-decompiler.com/)和SO特别是。到目前为止,我只能找到两个Java反编译器-JD-GUI和DJJavaDecompiler声称是最新的。其余所有内容要么无法下载,要么已停产。因此,我使用了一个包含AspectJ编织代码的.class文件,并使用两个可用的反编译器对其进行了反编译。观察结果:JD-GUI:DJJava反编译器:正如您所看到的,这两个工具都无法使用AspectJ反编译Java代码编织。现在我不是太挑剔了,我只是习惯了.NETReflector并在Java反编译器中寻找相同的质量,无论是独立的还

java - Lombok 和 AspectJ

我正在尝试将Lombok与AspectJ和Maven结合使用。所以有什么问题?当我使用AspectJMaven插件(www.mojohaus.org/aspectj-maven-plugin/)时,它获取源代码并编译它们并忽略Lombok所做的更改。我关注了thistutorial并想出了thiscode和AspectJ工作,但Lombok死于此消息:[WARNING]Youaren'tusingacompilersupportedbylombok,solombokwillnotworkandhasbeendisabled.Yourprocessoris:org.aspectj.org

java - 在 Web 服务中添加 AspectJ

我有一个JavaEEWeb服务(REST),现在想使用AspectJ创建一个规则,打印出每个传入的服务调用及其参数。我刚读到这个tutorial并实现了以下代码:POM.XMLorg.aspectjaspectjrt1.8.10org.aspectjaspectjweaver1.8.10org.codehaus.mojoaspectj-maven-plugin1.71.81.81.8truetrueignoreUTF-8compiletest-compile...并创建了一个带有切入点的Test.aj文件,该切入点应在调用getSignOfLife()后打印出测试字符串:importd

java - 使用 AspectJ 编译器而不是 Javac 编译时出错

我有一个多模块项目。该方面目前已添加到“核心”项目中。在此处执行mvncleaninstall时它有效。然而,尝试在父项目上执行mvncleaninstall在编译其他项目之一时失败并出现此错误:Thetypeorg.hibernate.annotations.CacheConcurrencyStrategycannotberesolved.Itisindirectlyreferencedfromrequired.classfiles如果我在该项目中添加Hibernate核心依赖项,它也可以工作,但是向不应具有依赖项的项目添加依赖项没有意义-因此这不是解决方案。当使用javac编译时,

java - AspectJ 的 JUnit 测试

我正在尝试为自定义方面编写Junit测试。这是方面类片段:@Aspect@ComponentpublicclassSampleAspect{privatestaticLoggerlog=LoggerFactory.getLogger(SampleAspect.class);@Around("execution(*org.springframework.data.mongodb.core.MongoOperations.*(..))||execution(*org.springframework.web.client.RestOperations.*(..))")publicObject

java - 语法错误,注释仅在源代码级别为 5.0 时可用 - Maven 中的 AspectJ

我正在尝试在Maven项目中使用aspectj-maven-plugin。在编译时,我得到:Syntaxerror,annotationsareonlyavailableifsourcelevelis5.0Syntaxerror,annotationsareonlyavailableifsourcelevelis5.0Syntaxerror,annotationsareonlyavailableifsourcelevelis5.0然而,我在我的pom.xml中设置了以下内容:1.61.6我有一些依赖:org.aspectjaspectjrt1.6.11org.codehaus.mojo

java - 将 AspectJ 添加到 pom.xml 使用 Maven 更改了 Java 版本,为什么?

更新:这是我的maven-compiler-plugin配置:org.apache.maven.pluginsmaven-compiler-plugin2.3.21.61.6我正在开发一个使用Maven构建的多项目应用程序。我们决定添加AspectJ,所以我将以下代码添加到顶级项目的pom.xml中:(来自官方文档)......org.aspectjaspectjrt1.7.3......org.codehaus.mojoaspectj-maven-plugin1.5compiletest-compile......以及每个下属项目的以下片段:..........org.codehau

java - 如何拦截具有标准 Java 功能(无 AspectJ 等)的方法调用?

我想拦截对某个类MyClass的所有方法调用,以便能够对某些setter调用使用react。我尝试使用动态代理,但据我所知,这仅适用于实现某些接口(interface)的类。但是MyClass没有这样的接口(interface)。除了实现一个包装类之外,还有没有其他方法可以将所有调用委托(delegate)给一个成员,该成员是MyClass的一个实例,或者除了使用AOP之外? 最佳答案 如您所述,您不能使用JDK动态代理(无接口(interface)),而是使用Spring和CGLIB(Spring附带的JAR),您可以执行以下操作

java - Maven : compile aspectj project containing Java 1. 6 源码

主要问题我想做的事情相当简单。或者你会这么想。但是,没有任何工作正常。要求:使用maven,使用AspectJ编译器编译Java1.6项目。注意:我们的代码不能用javac编译。也就是说,如果没有编织切面(因为我们有软化异常的切面),它会导致编译失败。2011年2月21日更新:有两种同样可行的解决方案(两种情况都使用aspectj-maven-plugin与maven-compiler-plugin):添加false到编译器插件(谢谢PascalThivent)添加process-sources到aspectj编译器插件(感谢AndrewSwan)关于这些解决方案的更多信息在答案部分。