这两天在使用MP的时候,配置了一个MetaObjectHandler用来处理公共字段,然后给Service加了一个AOP用来处理数据的自动加密解密过程。
就在编写完AOP对象后启动测试时,发现MetaObjectHandler不生效(没有被Spring注入)。期间尝试了各种方式,还是无法被注入到MP中。
最后我突发奇想是不是AOP那里有问题。然后神奇的一幕发生了,AOP没有被注入的话MetaObjectHandler就生效了!
加上AOP的Service是我自己编写的,并不是使用ServiceImpl实现的。目前还没发现问题产生的主要原因,有可能是MetaObjectHandler和Spring AOP的冲突,也有可能是因为我在AOP中的一些操作导致了和MetaObjectHandler发生了冲突。
Comment From: startjava
v3.5.4.1
试试
Comment From: Linna-cy
v3.5.4.1 我已经测试过了,还是一样的错误。
刚刚经过测试发现MetaObjectHandler自动填充字段后,会修改参数原值。而我在AOP中对参数进行的处理是将参数进行JSON序列化后再进行反序列化来拷贝对象,防止参数原值被修改。我想冲突的原因可能就发生在这里,因为MetaObjectHandler是在参数原值上进行修改,而我是先进行深拷贝,然后在参数副本上进行修改。