用户1340774522 :Spring 框架真的是个大脑升级人才能用的东西。这两天开发几个 API 的过程,95%时间在解决如下问题:如何配置才能让一个 Bean 覆盖另一个 Bean;为什么即使使用了 @ Import 也无法在单元测试中加载另一个 Component 类作为另一个 ContextConfiguration;为什么单元测试中一旦使用了 MockMvc 便会让 Druid 的 WebStatFilter 抛出空指针错(阿里的锅!);WebTestClient 怎么从响应正文拿到一个 JsonNode(没错我找不到办法,最后只好拿到 byte[] 格式的 HTTP 正文自己转!);@ JsonSerializer 和 @ JsonIgnore 注解为什么没用(因为我手里这份框架用的是阿里的 FastJSON,不是默认的 Jackson!);如何切换 HTTP Message Converter 为 Jackson 的那一套;如何让 Jackson 支持把 null 默认序列化为 0/空字符串/空数组;如何自定义一个 Jackson 的 BeanSerializerModifier,把默认的 BeanPropertyWriter 全部添加一个 NullSerializer;如何修改 SerializerFactory;如何自定义一个 DefaultSerializerProvider 让 Jackson 能根据自定义的规则寻找序列化器(写出 Jackson 的壬大概是大脑发育到了常人无法企及的复杂度。到底有谁会需要通过配置的方式来根据上下文对 JSON 进行序列化/反序列化啊…然而祂竟然做了出来);如何让 Jackson 正确序列化一个 OffsetDateTime 为 ISO8601 字符串格式;PageHelper 在有一对多联表的时候怎么就不能正确返回总元素个数了;@ Value 注解使用的语法是什么,MyBatis 里表达式使用的语法是什么(结果发现是 SpEL 和 OGNL,两门表达式语言,船新的语法!);HandlerExceptionResolver 是什么,为什么定义了一个 HandlerExceptionResolver,系统自带的含有 ResponseStatusExceptionResolver 的 HandlerExceptionResolverComposite 就消失了,怎么把它通过配置的方式加回来;为什么即使在数据源连接字符串中指定了 allowMultiQueries MyBatis 一次写多条 SQL 还是会出错;怎么把阿里巴巴的 Druid 的 WallFilter 配置成允许多条 SQL 语句;为什么即使配置写对了,多条 SQL 还是会出错(因为这是个 bug 还没修复,天杀的阿里!);怎么把 WallFilter 关掉;Jackson 的 JsonNode 为什么使用了类型不对的 asInt 不会抛出异常(这个功能作者从 2016 年一直拖到现在…);诸如此类,5%时间在写实际业务逻辑。
写完感觉大脑升级了一遍,我永远热爱 Spring Boot。 2021-03-28 22:55:09 举报 收藏 操作