npe

azpvetkf  于 2021-07-15  发布在  Java
关注(0)|答案(1)|浏览(396)

我遇到了一个问题,与外国客户端( Spring 启动初学者2.4.4, Spring 云启动openfeign 3.0.2)。当我试图在@modeldattribute注解对象内发送空列表时,feign client抛出feign.codec.encodeexception和nullpointerexception cause。当列表至少有一个元素时,不会出现问题。
有人知道如何正确地覆盖外设编码器,使传递空列表没有错误吗?

pvcm50d1

pvcm50d11#

您将需要创建一个实现伪编码器的类(https://github.com/openfeign/feign/blob/master/core/src/main/java/feign/codec/encoder.java)
例如

public class EnableEmptyListEncoder implements Encoder {
   @Override
   public void encode(Object object, Type bodyType, RequestTemplate template) {
    // empty list encode logic here 
   }
}

如何指向编码器取决于您的设置:
--通过application.yml:

feign:
    client:
        config:
            feignName:
                encoder: com.example.EnableEmptyListEncoder

--通过建筑物:

Feign.builder()
    .encoder( new EnableEmptyListEncoder()  )

--config类中的bean

@Bean
public EnableEmptyListEncoder encoder() {
    return new EnableEmptyListEncoder();
}

相关问题