全部
我Jackson2ObjectMapperBuilder
在我的主要 Spring Boot 应用程序类中进行了自定义,如下所示。
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Autowired
public void configureJackson(Jackson2ObjectMapperBuilder builder) {
builder.filters( new SimpleFilterProvider().addFilter( "customFilter", new ExampleFilter() ) );
}
ExampleFilter
的扩展在哪里SimpleBeanPropertyFilter
。我的 POJO 用 Jackson 的@JsonFilter("customFilter")
.
我已经使用@RestController
和@GetMapping
注释通过 HTTP 公开了 POJO。这可以正常工作,并且当我运行应用程序并访问端点时会调用自定义过滤器。
现在我有一个如下编写的集成测试。
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class IntegrationTest {
@LocalServerPort
private int port;
@Autowired
private TestRestTemplate restTemplate;
@Test
public void getUser() throws Exception {
POJO obj = this.restTemplate.getForObject("http://localhost:" + this.port + "/pojo", POJO.class);
Assertions.assertThat(obj).isNotNull();
Assertions.assertThat(obj.getFirstName()).isEqualTo("Jane");
Assertions.assertThat(obj.getLastName()).isEqualTo("Doe");
Assertions.assertThat(obj.getAge()).isEqualTo("24");
}
}
当我运行测试时,obj 为 null,我看到一个错误no FilterProvider configured
Failed to write HTTP message: org.springframework.http.converter.HttpMessageNotWritableException: Could not write content: Can not resolve PropertyFilter with id 'customFilter'; no FilterProvider configured; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not resolve PropertyFilter with id 'customFilter'; no FilterProvider configured
我做错了什么,我该如何纠正?
我的文件夹结构是:
src/main/java/com/a/b/c/Application.java
src/main/java/com/a/b/c/controller/ControllerA.java
src/test/java/com/a/b/c/controller/IntegrationTest.java