Skip to content

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