如何在spring项目中为@FeignClient定义切入点

时间:2018-02-24 13:19:57

标签: spring annotations aop aspect feign

我有简单的feignclient,如下所示

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

我想要的是定义基于弹簧的切入点之前的建议。我可以为具有特定注释的类定义切入点,但它不适用于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 个答案:

答案 0 :(得分:-2)

我试图用方面做的是用我自己的规则添加一些自定义日志。如上所述,我无法添加aop切入点。可以启用假日客户端日志,但其格式在我的情况下不可用。经过一些研究后,我发现可以切换默认的http客户端(我使用的是okhttp客户端)并向该客户端添加自定义记录器/拦截器。我准备了一个小例子。另一个解决方案是您可以向假装客户端添加自定义记录器,但这种方式更灵活。

springboot feign logger