FAIL_ON_UNKNOWN_PROPERTIES
option is true by default according to Jackson Documentation.
If you want to disable this setting you may add this option to application.properties
.
spring.jackson.deserialization.fail-on-unknown-properties = false
But in default settings it works as expected. So no need for any setting.
This is one file spring boot application:
@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; }
}
}
This is the integration test for testing rejection on unknown properties.
@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());
}
}
title property is not defined. So controller sends BadRequest.