Как определить pointcut для @FeignClient в весеннем проекте

У меня есть простой симулятор, как показано ниже

@FeignClient(name="xxx")
public interface XXXServiceClient { 
   @RequestMapping(value = "/foo/bar", method = RequestMethod.POST)
   public ResponseEntity<XXX>  doSomething(@RequestBody XXX args);
}

То, что я хочу, это определить основанный на пружине pointcut и Before advice. Я могу определить pointcut для классов с конкретной аннотацией, но это не работает для feignclient интерфейсов.

пример

@Pointcut("within(@org.springframework.stereotype.Controller *)")
public void controllerMethods() {}


@Before("controllerMethods()")
public void controllerMethodsBeforeAdvice(JoinPoint pjp) {
    System.out.println("Working");
}


@Pointcut("within(@org.springframework.cloud.netflix.feign.FeignClient *)")
public void feignClientMethods() {}


@Before("feignClientMethods()")
public void feignClientMethodsBeforeAdvice(JoinPoint pjp) {
    System.out.println("Not working");
}

1 ответ

То, что я пытался сделать с аспектом, это добавить собственный журнал с моими собственными правилами. Как уже упоминалось выше, я не смог добавить aop pointcut. Можно включить симуляцию клиентских логов, но в моей ситуации этот формат не подходит. После некоторых исследований я обнаружил, что можно переключить http-клиент по умолчанию (я использовал okhttp-клиент) и добавить собственный логгер / перехватчик для этого клиента. Я подготовил небольшой пример. Другое решение состоит в том, что вы можете добавить собственный логгер для симуляции клиента, но этот способ более гибкий.

Springboot Feign Logger

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