记一次需求
好久没写日志了,不是没活,是没时间写,需求都很赶,且都有后续优化,但日志也很有必要写,经验是宝贵但,记忆是不可靠的。必须要把经验记录下来。
需求大概是 需要在执行“某些”操作(这些操作有个特点就是执行后会造成更改数据库的结果)之后记录下来,需要记录更改了什么。然后把这些记录生产成消息发给mq去消费。
对于这次需求的实现,我是这样思考的。
1.需要记录这个操作更改了什么,那一定是有执行前和执行后的比较对象的。那如何优雅的比较同一个类的两个不同实例呢?
首先,那肯定是比较属性,但不能人工代码一个个手打比较属性。
所以我选择使用反射获取到对象所属类的所有属性。
那改了什么,这个返回值怎么设计。
为了明确改了什么,需要三个东西,1.具体属性字段,2.改之前,3.改之后
用什么数据结构?
用map,因为被修改的字段,和修改字段的具体两个内容(改之前和改之后)之间需要有映射。
map的key是String类型,是我们通过反射取到的字段名。
map的value是list类型,list(0)是改之前,list(1)是改之后。
如下可参考