feign常见问题
一、The bean 'permission-server.FeignClientSpecification', defined in null, could not be registered
原因是@FeignClient的value不能重复,所以需要在这里以自定义的方式来创建,需要手动增加配置,把api接口的@FeignClient(服务名)删除。 增加配置类:
@Data
@Component
@Import(FeignClientsConfiguration.class)
public class FeignConfig {
/** 角色API调用接口 */
private RoleApi roleApi;
/** 用户API调用接口 */
private UserApi userApi;
/** 菜单API调用接口 */
private MenuApi menuApi;
public FeignConfig(Decoder decoder,Encoder encoder,Client client,Contract contract){
this.roleApi = build(decoder,encoder,client,contract,RoleApi.class);
this.userApi = build(decoder,encoder,client,contract,UserApi.class);
this.menuApi = build(decoder,encoder,client,contract,MenuApi.class);
}
private <T> T build(Decoder decoder,Encoder encoder,Client client,Contract contract,Class<T> tClass){
return Feign.builder().client(client)
.encoder(encoder)
.decoder(decoder)
.contract(contract)
//默认是Logger.NoOpLogger
.logger(new Slf4jLogger(tClass))
//默认是Logger.Level.NONE
.logLevel(Logger.Level.FULL)
.target(tClass,"http://" + ServerClient.PERMISSION_SERVER);
}
}