据我了解,Spring 已经为 Jackson 提供了一个 bean ObjectMapper。因此,我不是创建一个新的 bean,而是尝试自定义这个 bean。
从这篇博文,然后这个Github项目我使用Jackson2ObjectMapperBuilderbean来实现这个定制。
@Bean
public Jackson2ObjectMapperBuilder jackson2ObjectMapperBuilder(ApplicationContext context) {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
builder.findModulesViaServiceLoader(true);
return builder;
}
Run Code Online (Sandbox Code Playgroud)
然后,我尝试自定义反序列化器以使其宽松:如果在反序列化属性时引发异常,我希望结果对象的属性为并null让反序列化继续(默认值是在第一个不能被序列化的属性上失败)反序列化)。
我已经能够通过NullableFieldsDeserializationProblemHandler扩展的类来实现这一点DeserializationProblemHandler(我认为代码不相关,但如果需要,我可以共享它)。
注册此处理程序的最简单方法是使用.addHandler()的方法ObjectMapper。但当然,这样做,我需要在每次注入和使用ObjectMapper. 我希望能够配置处理程序,以便每次ObjectMapper自动连接时,处理程序都已经存在。
到目前为止,我想到的最佳解决方案是@PostConstruct仅使用注释来注册问题处理程序。
@Configuration
public class JacksonConfiguration implements InitializingBean {
@Autowired private ObjectMapper objectMapper;
@Bean
public Jackson2ObjectMapperBuilder jackson2ObjectMapperBuilder(ApplicationContext context) {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
builder.findModulesViaServiceLoader(true);
return builder;
}
@Override
public …Run Code Online (Sandbox Code Playgroud) 在Facebook Messenger上讨论时,您可以上传文件并将其发送给您正在讨论的人.我实际上正在开发一个Messenger Bot(参见文档),因此,我试图找到这个上传工具的限制.
我发现上传超过25MB的文件是不可能的(我在这里找到了这些信息).
但是,一旦上传,我找不到这些附件有多长时间可用?实际上,Facebook Messenger正在服务器上传文件,并在通信中发送该资源的链接.但是我无法找到这个链接是否会永久可用,或者访问权限是否会受到时间的限制(因此,我认为附件会在此期限后删除).
facebook facebook-graph-api facebook-messenger facebook-messenger-bot