Spring
文章平均质量分 93
DDF_YiChen
世上人才千千万,我在垃圾堆里站
展开
-
`@ControllerAdvice`和`@RestControllerAdvice`的使用
@ControllerAdvice和@RestControllerAdvice的使用作用其实两个注解是同一个,只不过一个是针对与@RestController的另一个是针对@Controller的, 前后端分离我们都会使用@RestController, 因此后面直接针对这个来说,两个的区别是@RestController相当于在所有@Controller里的@RequestMapping方法上添加了注解@RequestBody可以简单理解为就是特意为@RestController设计的拦截器, 通过原创 2021-09-03 17:55:02 · 1934 阅读 · 0 评论 -
线程池的优雅关闭探究
线程池优雅停机方案简介在开发中使用线程池去执行异步任务是比较普遍的操作,然而虽然有些异步操作我们并不十分要求可靠性和实时性,但总归业务还是需要的。如果在每次的服务发版过程中,我们不去介入线程池的停机逻辑,那么很有可能就会造成线程池中队列的任务还未执行完成,自然就会造成数据的丢失。探究注意,本文所有前提是对进程进行下线时使用的是kill我们知道Spring已经实现了自己的优雅停机方案,详细请参考org.springframework.context.support.AbstractApplicati原创 2021-08-20 10:53:42 · 2581 阅读 · 0 评论 -
基于Spring IOC实现动态简易版的SPI
基于Java自实现的SPI机制的缺陷,以及使用的复杂性,在实际项目中可以通过Spring IOC来简易的实现一版。核心做法是:利用ApplicationContext的getBeansOfType()方法来获取目标接口的全部实现类需要调用接口的地方, 对外预留属性对应值为接口实现的实际bean_name, 然后根据上面的结果是一个Map, key为接口实现的bean_name, value为接口实现类, 然后通过预留属性获取用户想要使用的具体实现类,属性可以预留默认值,即为系统默认;用户可再进行实现原创 2020-12-17 13:30:03 · 333 阅读 · 0 评论 -
自定义参数解析器同一个参数支持多种Content-Type
事出有因, 原先上线的接口现在被要求用Java重写,按照原暴露出去的文档然后毫无疑问的,按照Java的惯例,一定是@RequestBody然后去接收application/json;charset=utf-8,然后一通参数接收处理逻辑。结果测试都通过了,上线的时候,刚把原接口切到新接口上,日志就狂飙application/x-www-form-urlencoded;charset=utf-8 NOT SUPPORTWhat?然后就一通问号脸。赶紧把接口切回到老接口,然后跑去问PHP的同事,什么情况,原原创 2020-09-03 11:04:23 · 1902 阅读 · 11 评论