opengoofy/crane4j

自动填充时,若目标类没有配置任何装配操作则执行会报错

Closed this issue · 0 comments

c998b1ba7fb8d2c4bf1abd3459428a2

当为一个方法指定自动填充时,crane4j 会通过 AbstractAutoOperateAnnotatedElementResolver 解析在 @AutoOperate 中指定的目标类型。

然而,实现类在实现该抽象类的 createAutoOperateAnnotatedElement 方法时,会在无法从目标类解析得到有效装配配置时返回 AutoOperateAnnotatedElement.EMPTY 这个空实现。

该空实现 getAnnotation 方法将会返回一个 null,但是在后续的操作中却并没有做空检查,因此在特定情况下会直接报空指针异常。

解决方案是调用 AbstractAutoOperateAnnotatedElementResolver#resolve 方法后,额外检查一次得到的对象是否为 AutoOperateAnnotatedElement.EMPTY 空实现。