怎么创建切入点来伪装支持接口继承的客户端?

原学程将引见若何创立切进面去假装支撑交心继续的客户端?的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

怎么创建切入点来伪装支持接口继承的客户端? 教程 第1张

成绩描写

在1个Spring Boot项目中,我有1个简略的假客户端

@MyAnnotation
@FeignClient(name="some-name", url="http://test.url")
public interface MyClient {
 @RequestMapping(method = RequestMethod.GET, value = "/endpoint")
 List<Store> getSomething();
}

我须要拦阻一切挪用,为此,我正在创立1个可在分歧项目中应用的大众库。为了完成它,我测验考试应用了Spring AOP。我创立了1个圆里,它包装了用MyAnnotation

正文的对于象的一切大众办法

@Around("@within(MyAnnotation) && execution(public * *(..))")
public Object myWrapper(ProceedingJoinPoint invocation) throws Throwable {
// ...
}

它任务正常,一切挪用都邑被截获,直到我测验考试将MyAnnotation搁在应用feign交心继续的feign客户端上。当我应用继续的交心挪用初初化我的客户端时,没有再被拦阻。

public interface FeignClientInterface {
 @RequestMapping(method = RequestMethod.GET, value = "/endpoint")
 List<Store> getSomething();
}

@MyAnnotation
@FeignClient(name="some-name", url="http://test.url")
public interface MyClient extends FeignClientInterface{ 
}

我已测验考试:

    "@target(MyAnnotation) && execution(public * *(..))"但是当我将我的库衔接到现实项目时,我获得了java.lang.IllegalArgumentException: Cannot subclass final class org.springframework.boot.autoconfigure.AutoConfigurationPackages$BasePackages,它仿佛想要将一切实质包装到署理,而且有终究的类。

    "@target(MyAnnotation) && execution(public * com.my.company.base.package.*(..))"增除上1个成绩,但是给出了另外一个成绩,如某些Bean出著名称没法虚例化等。

成绩是怎样在没有将@MyAnnotation挪动到根本交心FeignClientInterface的情形下使其任务。它在另外一个项目中,我没法掌握它。

推举谜底

佳的,经由多少个小时的查询拜访,我用这个调换了我的切进面

@Around("execution(* (@MyAnnotation *).*(..)) || execution(@MyAnnotation * *(..))")

如前所述here我应用execution只是为了不创立署理。

佳了闭于怎样创立切进面去假装支撑交心继续的客户端?的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。