feign常见问题
一、The bean 'permission-server.FeignClientSpecification', defined in null, could not be registered
原因是@FeignClient的value不能重复,所以需要在这里以自定义的方式来创建,需要手动增加配置,把api接口的@FeignClient(服务名)删除。 增加配置类:
java
@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);
}
}