草庐IT

java - 使用 Maven AspectJ 编织依赖项时重复类

我们正在使用MavenAspectJ插件来构建我们的Web应用程序。它利用“weaveDependencies”向一些依赖jar文件添加方面。现在我们最终在Web应用程序存档中得到一些类的两个版本,一个在WEB-INF/classes中,另一个在WEB-INF/lib。似乎只有classes中的那个有方面。恐怕这会引起问题。解决此问题的最佳方法是什么?同样的问题讨论(无解)overattheEclipseforums.整个pom.xml本身就很大,当然包含的子项目也有自己的。我希望以下来自WAR项目的摘录能够提供足够的信息。org.apache.maven.pluginsmaven-w

java - 无法让 Intellij 使用 AspectJ 编译器

我在网上看到的一切都只是说从编译器列表中选择“ajc”编译器,但这对我来说不是一个选项。我有javac、jikes、eclipse和javac-in-process,仅此而已。因为我的项目是使用maven从命令行编译的,但是如果我在使用方面的IDE中键入任何内容,我会收到编译器警告。 最佳答案 确保AspectJSupport插件在Settings(PreferencesonMac)中启用|插件。Followthedocumentation了解更多详情。当使用适当的Maven项目时,ajc编译器将自动启用。

java - AspectJ 建议未通过单元测试执行

我被难住了。我正在尝试测试AspectJ类。当我运行我的应用程序时,我的Aspect类得到了完美的选择。但是,我似乎无法获得任何Aspect类来拦截测试中的任何方法。我正在使用Spring3.2.2、AspectJ1.7.2和Maven4。这是我正在使用的简单测试:测试AspectJ类packagemy.package.path.config;importorg.aspectj.lang.ProceedingJoinPoint;importorg.aspectj.lang.annotation.Around;importorg.aspectj.lang.annotation.Aspec

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

我有一个方面在我的TestNG测试方法抛出异常后运行。我想将测试方法名称放入我的aspectj方法中。对此有什么想法吗?请在下面找到我的代码示例:看点:pointcutpublicCall():call(public**(..));after()throwing(AssertionErrore):publicCall(){logger.debug("AssertionErrorthrown");System.out.println("Threwanexception:"+e);}测试:@TestpublicvoidtestScenarioOne(){logger.debug("From

java - IntelliJ IDEA + AspectJ

我正在尝试在IntelliJIDEA的示例项目中使用AspectJ。我有使用SpringAOP的经验,但这是我第一次使用AspectJ,无法让它工作。我正在尝试按照此处所述进行操作:https://www.jetbrains.com/help/idea/2017.1/aspectj.html我的build.gradle:applyplugin:'java'repositories{mavenCentral()}dependencies{compile"org.projectlombok:lombok:+"compile"org.aspectj:aspectjrt:+"compile"o

java - 为静态方法设置 AspectJ 建议

我用原始切入点和建议方法编写了简单的切面:@AspectpublicclassMyAspect{@Pointcut("execution(static*com.mtag.util.SomeUtil.someMethod(..))")publicvoidsomeMethodInvoke(){}@AfterReturning(value="someMethodInvoke())",returning="comparisonResult")publicvoiddecrementProductCount(ListcomparisonResult){//someactions}}我有以下基于Sp

java - 将代码插入方法 - Java

有没有办法自动将代码插入到方法中?我有以下带有getter和setter的典型字段,我想将指示的代码插入到记录字段是否被修改的setter方法中,以及插入指示的“isFirstNameModified”字段以跟踪字段是否被修改是否被修改。publicclassPerson{SetupdatedFields=newLinkedHashSet();StringfirstName;publicStringgetFirstName(){returnfirstName;}booleanisFirstNameChanged=false;//Thiscodeisinsertedlaterpublic

java - 如何基于带注释的参数编写方面切入点

我在弄清楚如何创建将在具有特定注释参数的bean上运行的切入点时遇到了一些麻烦。我的最终目标是在处理参数之前验证参数的值,但目前我只需要创建切入点。考虑下面的注解@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.PARAMETER})public@interfaceMyAnnotation{}然后我想将其应用于许多方法,例如:publicvoidmethod1(@MyAnnotationlongi){}publicvoidmethod2(StringsomeThing,@MyAnnotationlongi){}publicv

java - Java 中的面向方面编程

Java面向方面编程的最佳工具是什么?工具的要求当然是IDE支持、表现力和适当的文档。 最佳答案 JBossAOP和AspectJ是两个常用的成熟的AOP框架。另一个流行的选择是SpringAOP,但它缺少其他两个的一些特性。JBossAOP和AspectJ都有相似的特性,一个很大的区别是AspectJ依赖于对Java语言的扩展,而JBossAOP则不然。如果您的AOP要求相当简单,也值得考虑字节码操作库,例如ASM.我已经使用ASM来实现简单的“环绕建议”(即,在方法调用之前和之后注入(inject)的代码),事实证明它是JBos

java - 为什么 Spring AOP 不在运行时编织外部 jar?

我有一个基于Spring3构建的java应用程序。这个项目有另一个jar作为依赖项。此依赖项包含一个@org.aspectj.lang.annotation.Aspect类(比方说,com.aspectprovider.aspects.MyAspect)。有一个@Before建议从实现接口(interface)Foo的类中编织一个方法。像这样的东西:@Before("execution(*com.project.Foo.save(..))")Foo接口(interface)可以在“项目”中或在另一个jar中。对于此示例无关紧要。我的项目包含实现Foo的类。当然,这些是我希望编织的类。我