Tag: aspectj

AspectJ中的类型间声明的简短示例是什么,它certificate了该方法的有用性?

我首先考虑使用ITD来定义private static final Logger logger = …对于一些不相关的情况,但它看起来不像使用它作为演示示例的明显改进。 是否有一些标准/建议的ITD使用示例,人们应该将其用于教学目的?

Aspectj和捕获私有或内部方法

我用Spring配置了AspectJ,它可以在“捕获”来自类外的公共方法时正常工作。 现在我想做这样的事情: public class SomeLogic(){ public boolean someMethod(boolean test){ if(test){ return innerA(); } else { return innerB(); } } private boolean innerA() {// some logic} private boolean innerA() {// some other logic} } SomeLogic是一个SpringBean。 方法innerA()和innerB()可以声明为private或public – 从Struts动作调用someMethod()方法。 是否有可能从AspectJ中捕获从someMethod()调用的方法innerA()或innerB()? 我的配置(基于XML):

如何使用Java 7和maven启用aspectj编译时编织

我有一个目前适用于java 6和编译时编织的项目。 我们使用以下pom来启用spring方面和我们自己的方面: org.codehaus.mojo aspectj-maven-plugin 1.4 true 1.6 1.6 ignore 1.6 UTF-8 false org.springframework spring-aspects compile test-compile 我已经尝试了各种配置,但无法使其与java 7一起使用。如果有人可以分享工作pom或引导它会很棒。

在spring用AOP记录?

我是新来的,在我的办公室里。 所以我没有指导。 我需要使用log4j使用AOP实现日志记录。 我在基本的spring MVC示例中实现了没有AOP的日志记录? 在没有记录的aspectJ下使用aspectJ在AOP做了小样本(刚刚制作了Sysout )? 我不知道如何整合它? 任何人都可以给我一个启动想法吗? 肯定赞赏好的答案……

AspectJ切入点表达式匹配任何位置的参数注释

我正在尝试定义切入点表达式以匹配包含用特定注释注释的参数的方法,无论参数位于何处。在我的情况下,我正在寻找@Constraint注释。 例如: 匹配方法: public void method1(@Constraint Car car) public void method2(String id, @Constraint Plane plane) public void method3(Wheel wheel, @Constraint List trains, @Constraint Plane plane) public void method4(Motor motor, @Constraint Set trains, Bicycle bike, Wheel wheel) public void method5(Wing wing, Motorcycle moto, @Constraint Truck truck, Bicycle bike, Wheel wheel) 到目前为止,我已经尝试了以下表达式而没有运气: @Before(“execution(public * *.*(..)) and @args(com.example.Constraint)”) […]

具有注释参数的切入点匹配方法

在以下情况下,我需要使用与方法匹配的切入点创建方面: 它是用MyAnnotationForMethod注释的 其中一个参数(可以有很多)用@MyAnnotationForParam注释(但也可以有其他注释)。 方面类看起来像这样 @Pointcut(“execution(@MyAnnotationForMethod * *(..,@aspects.MyAnnotationForParam Object, ..)) && args(obj)”) void myPointcut(JoinPoint thisJoinPoint, Object obj) { } @Before(“myPointcut(thisJoinPoint , obj)”) public void doStuffOnParam(JoinPoint thisJoinPoint, Object obj) { LOGGER.info(“doStuffOnParam :”+obj); } 注释方法 @MyAnnotationForMethod public string theMethod(String a, @MyAnnotationForParam @OtherAnnotation Object obj, Object b){ LOGGER.info(a+obj+b); } 随着eclipse – >警告:关于poincut: Multiple markers at this line – no […]

如何检测/建议Spring Data(JPA)存储库?

我没有努力建议一个spring data jpa存储库。 目标是检测(围绕)使用自定义注释(在此示例中为ResourceNotFound)注释的特定存储库中的所有非void公共方法,并在返回值为null或空集合时抛出exception。 @Repository @ResourceNotFound @Transactional(readOnly = true) public interface CityRepository extends JpaRepository, JpaSpecificationExecutor { … } 以下建议是连接用@ResourceNotFound注释的接口实现的所有公共方法。 @Pointcut(“within(com.digitalmisfits.spring.aop.annotation.ResourceNotFound *)”) public void beanAnnotatedWithResourceNotFound() {} @Pointcut(“execution(public * *(..))”) public void publicMethod() {} @Around(“beanAnnotatedWithResourceNotFound() && publicMethod()”) public Object publicMethodInsideAClassMarkedWithResourceNotFound(ProceedingJoinPoint pjp) throws Throwable { System.out.println(“publicMethodInsideAClassMarkedWithResourceNotFound ” + pjp.getTarget().toString());; Object retVal = pjp.proceed(); if(((MethodSignature) pjp.getSignature()).getReturnType() != Void.TYPE && […]

Aspectj覆盖方法的参数

我正在开发一个方面来检查setter方法的参数并用空值覆盖空字符串。 到目前为止这是我的州: @Before(“execution(* de.foo.entity.*.set*(..)) && args(java.lang.String)”) public void check(final JoinPoint jp) { LOGGER.debug(jp.getSignature().toLongString()); Object[] args = jp.getArgs(); for (int i = 0; i < args.length; i++) { if (args[i] instanceof String && ((String) args[i]).isEmpty()) { args[i] = null; } } } 不幸的是,覆盖语句args[i] = null; 现在有效! 有谁知道我该怎么覆盖它? 干杯, 凯文

Spring + AspectJ使用aspectj-maven-plugin编织java 8

我正在将我的项目从java 7迁移到java 8,我遇到的问题与使用aspectj-maven-plugin aspectj编织有关。 根据Haus文档,我可以使用在Java 6和7上运行的这个插件成功配置编织。 但问题是我还没有找到任何方法来使用(并找到)支持java 8的插件版本7.我在这里看到插件7增加了java 8支持,但找不到使用它的方法。 这是我需要的配置插件: org.codehaus.mojo aspectj-maven-plugin 1.7 1.8 1.8 1.8 compile test-compile 我确认使用版本1.6的上述代码适用于Java 7,但尝试使用1.7版本没有运气。 你知道怎么运行在Java 8上运行的spring + aspectj的weaver吗?

Maven:编译包含Java 1.6源的aspectj项目

主要问题 我想做的事情相当容易。 或者你会想。 但是,没有任何工作正常。 要求:使用maven,使用AspectJ编译器编译Java 1.6项目。 注意:我们的代码无法使用javac进行编译。 也就是说,如果未编入方面,则编译失败(因为我们有方面可以软化exception)。 2011年 2月21日更新:有两个同样可行的解决方案(两种情况都使用aspectj-maven-plugin与maven-compiler-plugin结合 ): 将false到编译器插件中(感谢Pascal Thivent ) 将process-sources到aspectj编译器插件中(感谢Andrew Swan ) 有关这些解决方案的更多信息,请参阅答案部分。 我认为解决方案#2是更好的方法。 相关问题 问题(基于以下失败的尝试): 如何让maven运行aspectj:直接编译目标,而不运行compile:compile? 你怎么忽略编译的失败:编译? 你如何指定一个指向你自己的ajc编译器的自定义compilerId(即make compile:compile使用除了plexus之外的aspectj编译器)?* 感谢您的任何建议。 这些是我尝试过的导致我的问题/问题的事情: 尝试1(失败):指定aspectJ作为maven-compiler-plugin的编译器: org.apache.maven.plugins maven-compiler-plugin 2.2 1.6 1.6 aspectj org.codehaus.plexus plexus-compiler-aspectj 1.8 这失败并出现错误: org.codehaus.plexus.compiler.CompilerException: The source version was not recognized: 1.6 无论我使用的是什么版本的plexus编译器(1.8,1.6,1.3等),这都行不通。 我实际上阅读了源代码,发现这个编译器不喜欢Java 1.5以上的源代码。 尝试2(失败):使用附加到编译和测试编译目标的aspectJ-maven-plugin: org.codehaus.mojo aspectj-maven-plugin 1.3 1.6 1.6 […]