Аспект Spring Boot не работает в моем API

Я пытаюсь сделать аспект ведения журнала для моего 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 имеет визуальный инструмент для перехода к рекомендованным методам, и когда я его посмотрел, он показал мне методы контроллера, однако совет по-прежнему не работает должным образом.

Проверьте @ Перед импортом - вы импортировали AOP или JUnit?

Justinas Jakavonis 08.07.2018 14:23

Аннотация @Before взята из пакета org.aspectj.

Abgar Kebar 08.07.2018 14:26

Вы отлаживали, чтобы убедиться, что ваше ведение журнала просто не работает? Кроме того, возможно, попробуйте использовать Around вместо того, чтобы использовать ранее, это позволит вам также регистрировать время ответа и статус.

Half_Duplex 08.07.2018 15:03
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
3
546
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Нашел проблему. При первом создании файла Intelij предлагал сделать аспект вместо класса java, который сделал файл Logging.aj и создал

public aspect Logging{}

Когда я переименовал ключевое слово аспекта в ключевое слово класса, файл все еще имел тип .aj. Я переименовал его в .java, и теперь он отлично работает.

lol Я сделал ту же ошибку! большое спасибо! Я бы никогда не нашел эту проблему самостоятельно!

java_newbie 17.01.2020 11:02

Другие вопросы по теме