2.0.3.RELEASE
2.0.1.RELEASE
2.0.2-SNAPSHOT
-这是current master的本地版本。GeoJsonModule在主应用程序中配置:
import org.springframework.data.mongodb.core.geo.GeoJsonModule;
@SpringBootApplication
public class MyApplication {
[...]
@Bean
public GeoJsonModule registerGeoJsonModule() {
return new GeoJsonModule();
}
[...]
}
我正在使用Spring Auto REST Docs,因此无法使用@AutoConfigure
注释(或者至少我不知道如何使用)。
我像这样配置WebTestClient:
WebTestClient
.bindToApplicationContext(context)
.configureClient()
.filter(
WebTestClientRestDocumentation
.documentationConfiguration(restDocumentation)
.snippets()
.withDefaults(
WebTestClientInitializer.prepareSnippets(context),
CliDocumentation.curlRequest(),
HttpDocumentation.httpRequest(),
HttpDocumentation.httpResponse(),
AutoDocumentation.requestFields(),
AutoDocumentation.responseFields(),
AutoDocumentation.pathParameters(),
AutoDocumentation.requestParameters(),
AutoDocumentation.description(),
AutoDocumentation.methodAndPath(),
AutoDocumentation.section()
)
)
.build();
但是,当像这样使用WebTestClient时,出现以下错误:
org.springframework.core.codec.CodecException: Type definition error: [simple type, class org.springframework.data.mongodb.core.geo.GeoJsonPoint]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `org.springframework.data.mongodb.core.geo.GeoJsonPoint` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
at [Source: UNKNOWN; line: -1, column: -1] (through reference chain: com.example.MyClass["location"])
所以我环顾四周,发现WebTestClientAutoConfiguration
和SpringBootWebTestClientBuilderCustomizer
是additionally customizing Codecs。
更改初始化以包括定制程序可以解决反序列化问题,并且可以解决此问题。
Collection<CodecCustomizer> customizers = context.getBeansOfType(CodecCustomizer.class).values();
SpringBootWebTestClientBuilderCustomizer builderCustomizer = new SpringBootWebTestClientBuilderCustomizer(customizers);
builderCustomizer.customize(builder);
builder.build();
但是,我不知道这是否是配置WebTestClient的正确方法,并且它是否可以完全正常工作,或者是否仍然有问题,我才发现。
以某种方式我不认为这是预期的方式,我想知道如何正确配置WebTestClient。