Важно. Поскольку вы заявили, что используете установку Spring Boot, я предполагаю, что вы реализовали модуль Spring AOP вместо «фактической» библиотеки AspectJ. Разница значительна, так как реализация АОП отличается между ними. Spring использует аннотации AspectJ для применения прокси , в то время как AspectJ «вплетает» код в ваше приложение. Короче говоря, Spring AOP может быть проще реализовать, в то время как AspectJ предлагает более тонкую функциональность (например, ткачество во время компиляции). Сравнение можно найти здесь .
Я опробовал конфигурацию из фрагмента кода, который вы указали в своем посте. Совет был вызван после того, как я добавил несколько аннотаций:
@SpringBootApplication
// Be sure to add EnableAspectJAutoProxy and set proxyTargetClass to true
@EnableAspectJAutoProxy(proxyTargetClass = true)
public class DemoApplication {
...
}
// Be sure to add @Aspect and @Component
@Component
@Aspect
public class DemoAop {
private static Logger logger = LoggerFactory.getLogger(DemoAop.class);
@Pointcut("within(@org.springframework.stereotype.Controller *)")
public void controller() {
}
@Pointcut("execution(* *.*(..))")
protected void allMethod() {
}
@Before("controller()&& allMethod()")
public void logBefore(JoinPoint joinPoint) {
logger.info("TEST");
}
}