我正在使用Java中的注释进行面向Spring面向编程。我有一个Aspect LogAOP:
@Aspect
public class LogAOP {
@DeclareParents(value="beans.service.*+", //Line 1
defaultImpl= EventImpl.class)
public static Event mixin;
@Before("com.beans.business.businessService() &&" +
"this(abc)")
public void usage(Event abc) {
abc.increment();
}
}
我无法理解@DeclareParents注释的value属性中第1行中'+'符号的重要性。 即使我删除此+符号,该程序运行正常。我还搜索了Spring AOP(http://docs.spring.io/spring/docs/2.5.4/reference/aop.html)的官方文档,那里没有提到任何内容。
答案 0 :(得分:5)
在使用类名或接口名称来匹配该类或接口及其所有子类之后使用+
。所以,在这种情况下的切入点表达式:
@DeclareParents(value="beans.service.*+", //Line 1
defaultImpl= EventImpl.class)
public static Event mixin;
...将匹配包beans.service
中定义的任何接口或类,以及这些类和接口的任何子类或实现类。可能需要它,因为实现类可能不在beans.service
包中。在您的情况下,您没有看到效果,因为可能所有的实现类都在同一个包中。尝试在beans.service
包中实现一个接口,并将实现类放在另一个包中。我想,你会看到差异。