Я пытаюсь сделать аспект ведения журнала для моего API загрузки Spring, чтобы каждый раз, когда запрос поступает на сервер, все записывалось в файл. Однако я не могу заставить свой аспект вызвать. Что я делаю неправильно?
Вот Аспект
@Aspect
@Component
public class Logging {
private Logger log;
@Before("execution(* com.package.TeamController.*(..))")
public void before(JoinPoint joinPoint){
log = Logger.getLogger(joinPoint.getClass());
log.info("Starting request " + joinPoint.getSourceLocation());
if (joinPoint.getArgs()!=null){
log.info(" Arguments are");
for(Object obj : joinPoint.getArgs()){
log.info(obj.getClass().getName() );
}
}
}
}
Точка входа в приложение:
@SpringBootApplication(scanBasePackages =
{"com.package", "com.aspect"})
@EnableJpaRepositories
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
И в моем файле application.properties есть эта строка
spring.aop.auto=true
Что я делаю неправильно? Почему информация об аспектах не записывается при вызове метода из TeamController?
ПРИМЕЧАНИЕМетод командного контроллера вызывается через запрос GET.
ЗАМЕТКА 2Intelij Ide имеет визуальный инструмент для перехода к рекомендованным методам, и когда я его посмотрел, он показал мне методы контроллера, однако совет по-прежнему не работает должным образом.
Аннотация @Before взята из пакета org.aspectj.
Вы отлаживали, чтобы убедиться, что ваше ведение журнала просто не работает? Кроме того, возможно, попробуйте использовать Around вместо того, чтобы использовать ранее, это позволит вам также регистрировать время ответа и статус.




Нашел проблему. При первом создании файла Intelij предлагал сделать аспект вместо класса java, который сделал файл Logging.aj и создал
public aspect Logging{}
Когда я переименовал ключевое слово аспекта в ключевое слово класса, файл все еще имел тип .aj. Я переименовал его в .java, и теперь он отлично работает.
lol Я сделал ту же ошибку! большое спасибо! Я бы никогда не нашел эту проблему самостоятельно!
Проверьте @ Перед импортом - вы импортировали AOP или JUnit?