我正在尝试使用zalando problem-spring-web https://github.com/zalando/problem-spring-web
在自己的Spring Boot项目中实现RFC 7807我已经按照本指南https://github.com/zalando/problem-spring-web/tree/master/problem-spring-web
进行了设置当引发异常时,会生成Problem
实例,但是其序列化JSON格式与预期的不同,最值得注意的是,当不应该包含堆栈跟踪时。
经过一些调试后,看来ProblemModule
没有在用于序列化问题的ObjectMapper
中注册(从未调用过其setupModule
方法)。我的印象是,声明类型为Module
的bean足以让Spring拾取它并在ObjectMapper
中注册,但是在这里并没有发生。
医生说
如果要启用堆栈跟踪,请配置您的 问题模块如下:
ObjectMapper mapper = new ObjectMapper()
.registerModule(new ProblemModule().withStackTraces());
这似乎意味着您需要实例化自己的ObjectMapper
,但是在反序列化问题时如何确定库是否使用了它呢?
答案 0 :(得分:0)
由于我无法获得ObjectMapper
来注册我的Module
,所以我认为自己必须这样做,所以我想出了一个可行的解决方案:
@Configuration
public class ProblemConfiguration implements InitializingBean {
@Autowired
ObjectMapper objectMapper;
@Override
public void afterPropertiesSet() {
objectMapper.registerModules(
new ProblemModule(),
new ConstraintViolationProblemModule()
);
}
}
如果有人知道为什么它无法按预期工作,我很高兴听到它:)