Kri*_*fer 11 spring-cloud netflix-feign
使用Spring MVC和Feign Client(使用spring cloud)构建端点和客户端.我认为既然两端都需要有相同的注释 - 并且它们必须非常同步.也许我可以在界面中定义它们并让两端实现它.
测试它我有点惊讶它实际上适用于Spring Web结束.
但我无法找到一种方法为Feign客户端做同样的事情.
我基本上有接口:
@RequestMapping("/somebaseurl")
public interface ServiceInterface {
@RequestMapping(value = "/resource/{identifier}", method = RequestMethod.POST)
public SomeResource getResourceByIdentifier(String identifier);
}
Run Code Online (Sandbox Code Playgroud)
然后是RestController
@RestController
public class ServiceController implements ServiceInterface {
public SomeResource getResourceByIdentifier(@PathVariable("identifier") String identifier) {
// Do some stuff that gets the resource
return new SomeResource();
}
}
Run Code Online (Sandbox Code Playgroud)
最后是Feign客户端
@FeignClient("serviceName")
public interface ServiceClient extends ServiceInterface {
}
Run Code Online (Sandbox Code Playgroud)
Feign客户端似乎没有读取继承的注释.那么还有其他方法可以完成同样的事情吗?我可以将ServiceInterface变成Feign客户端而不直接注释它?
Ale*_*tig 12
从Feign 8.6.0开始,这是可能的.来自Spring Cloud文档:
假装继承支持
Feign通过单继承接口支持样板apis.这允许将常见操作分组为方便的基本接口.与Spring MVC一起,您可以为REST端点和Feign客户端共享相同的合同.
UserService.java
Run Code Online (Sandbox Code Playgroud)public interface UserService { @RequestMapping(method = RequestMethod.GET, value ="/users/{id}") User getUser(@PathVariable("id") long id); }UserResource.java
Run Code Online (Sandbox Code Playgroud)@RestController public class UserResource implements UserService { }UserClient.java
Run Code Online (Sandbox Code Playgroud)@FeignClient("users") public interface UserClient extends UserService { }
| 归档时间: |
|
| 查看次数: |
5323 次 |
| 最近记录: |