我有一个从应用程序上下文中获得的 ShapeService。shapeService 被注入了一个圆形和三角形。我的 shapeService 中有 getCircle() 和 getTriangle()。我还有一个建议,它配置为在调用 getter 时触发。指定的切入点表达式,使其适用于所有 getter。因此,每当调用 getCircle() 或 getTriangle() 时,都会触发通知。但我想知道为什么 applicationContext.getBean() 没有触发它。这也是一个满足切入点表达式的getter。谁能帮我弄清楚为什么它没有被触发。
@Aspect
@Component
public class LoggingAspect {
@Before("allGetters()")
public void loggingAdvice(JoinPoint joinPoint){
System.out.println(joinPoint.getTarget());
}
@Pointcut("execution(public * get*(..))")
public void allGetters(){}
}
这是获取 bean 的主要类。只有 Shapeservice 的 getter 和 circle 的 getter 被触发,而不是 appllicationContext 的 getBean
public class AopMain {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-config.xml");
ShapeService shapeService = ctx.getBean("shapeService", ShapeService.class);
System.out.println(shapeService.getCircle().getName());
}
}
谢谢