FAIL_ON_UNKNOWN_PROPERTIES
オプションは、デフォルトではJackson Documentationに該当します。
この設定を無効にする場合は、このオプションをapplication.properties
に追加することができます。
spring.jackson.deserialization.fail-on-unknown-properties = false
しかし、デフォルト設定では期待どおりに機能します。何も設定する必要はありません。
これは、1つのファイルバネブートアプリケーションです:
@RestController
@SpringBootApplication
public class TestOptionApplication {
public static void main(String[] args) {
SpringApplication.run(TestOptionApplication.class, args);
}
@PostMapping("/test")
public void formTest(@RequestBody final HelloForm form) {
}
public static class HelloForm {
private String name;
public String getName() { return name; }
public void setName(final String name) { this.name = name; }
}
}
これは、未知の性質に拒絶反応をテストするための統合テストです。
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestOptionApplicationTest {
@Autowired
private WebApplicationContext context;
@Test
public void testFailOnUnknownPropertiesOption() throws Exception {
final String text = "{\"name\": \"test\", \"title\": \"test\"}";
MockMvcBuilders
.webAppContextSetup(this.context)
.build()
.perform(post("/test").contentType(MediaType.APPLICATION_JSON).content(text))
.andExpect(status().isBadRequest());
}
}
タイトルプロパティが定義されていません。したがって、コントローラはBadRequestを送信します。
デシリアライズしようとしているオブジェクトとコードを投稿できますか? – developer
この質問のように 'Jackson2ObjectMapperBuilder'を定義すると動作しますか?https://stackoverflow.com/questions/34545997/put-and-post-fail-on-unknown-properties-spring-different-behavior? – Infinity
@Infinity素早く返信いただきありがとうございます。私もそれを試みたが、うまくいきませんでした。これは、Spring-Boot Web依存関係とPUTリクエストメソッドを持つプレーンなプロジェクトで、ユーザーを更新します(データベースを使用していないので、メソッドをテストするために更新要求を記録しています)付加的な注釈のないユーザモデル。 – Kiba