找出对象是否已经是ByteBuddy代理

时间:2018-01-18 12:00:45

标签: java byte-buddy dynamic-proxy

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

Entity save(Entity entity);

实体是一个接口。

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

关键是必须仅在实体尚未代理时创建此代理,但由于ByteBuddy代理不依赖于任何ByteBuddy类,因此我不知道如何确定实体是否已经代理

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

1 个答案:

答案 0 :(得分:1)

您是自己创建实例还是正在使用的库?我建议你为任何这样的实例实现一些标记接口,然后你可以执行快速而便宜的检查:instance instanceof MyProxy

Byte Buddy没有公开任何财产是图书馆的重要组成部分。如果存在这种依赖关系,则无法在OSGi环境中使用该库,例如。