查明对象是否已经是 ByteBuddy 代理

Find out if an object is already a ByteBuddy proxy

我正在实施 DDD 存储库模式(使用对象数据库,但这对问题并不重要)并且在存储库中有这样的方法:

Entity save(Entity entity);

其中 Entity 是一个接口。

在实现中,我创建了一个代理来包装接收到的实体并覆盖 getter 和 setter(然后写入文档)然后 return 它。

关键是只有当实体尚未被代理时才必须创建此代理,但是由于 ByteBuddy 代理不依赖于任何 ByteBuddy 类 我不知道如何确定是否实体是否已被代理。

了解对象是否已被 ByteBuddy 代理的最佳机制是什么?

您是自己创建实例还是您正在使用的库?我建议您为任何此类实例实现一些标记接口,然后您可以执行快速且廉价的检查:instance instanceof MyProxy.

Byte Buddy 不公开任何 属性 是库的重要组成部分。例如,如果存在这样的依赖关系,您将无法在 OSGi 环境中使用该库。