我正在尝试创建一个注释来记录带注释的类中的所有方法,但是我的切入点有问题,它没有应用(AspectJ版本1.7.4,aspectj pluginVersion1.7)。
(advice defined in com.test.util.log.Logger has not been applied
[Xlint:adviceDidNotMatch]).切入点:
@Pointcut(value = "execution(* (@Loggable *).*(..))"))注释:
@Retention(RetentionPolicy.RUNTIME)
@Target(value = { ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.TYPE })
public @interface Loggable {
public enum Level {
TRACE, DEBUG, INFO, WARN, ERROR, FATAL
};
boolean entry() default true;
boolean exit() default true;
String prefix() default "";
String suffix() default "";
Level level() default Level.DEBUG;
}谢谢
发布于 2014-10-15 10:06:57
我假设注释不是在未命名的顶级包中,而是在像com.company.application.subpackage这样的包中。如果这是真的,则需要在注释样式@AspectJ中使用完全限定的包名。在本机语法中,这是不必要的,因为您可以在那里使用导入。因此,切点应该是:
@Pointcut("execution(* (@com.company.application.subpackage.Loggable *).*(..))"))使用括号的方式使切入点只匹配由类注释的@Loggable类的方法。注释的@Target定义表明,它也可以应用于方法和构造函数。这些将不会与您的切入点相匹配,为此您将不得不修改它。我希望你知道,我只是为了安全而提这件事。
发布于 2015-04-29 05:34:55
建议)意味着在编译的项目中没有应用您的切入点剪切。很可能您没有将注释放在任何方法上。
我还建议不要重新发明轮子,试试aspect4log。
发布于 2019-10-28 05:57:47
before(): execution(* YourOwnPackage.*.*(..))
{
//packages is com
System.out.println(" TEST");
}以此作为开始,找到你自己的建议。
https://stackoverflow.com/questions/26378562
复制相似问题