Skip to content

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);
    }

}