我们如何最好地设计管理 Java 对象的运行时元数据?
例如:
对于类似 ORM 的解决方案,其中使用统一的 api 持久保存对象图。我们可能想要收集元数据,例如属性的到期时间。 session 在预设时间后到期
User | Session
目前这可以通过注释来实现,
User | | @Expire(3000) Session
但是,如果我们根据其他逻辑(例如服务器是在白天还是晚上创建 session )来计算 session 过期时间。上述方法行不通。
示例2:
- “Expire”是一个框架产品,可用于 同一张图表中的多个位置以不同的方式。
- 同样,注释的值在设计时/编译时也是未知的。 例如:每个用户都可以选择自己的密码有效期。 同样,每个用户的 session 过期时间计算方式可能不同
User | | @Expire password | | @Expire session
我们怎样才能最好地得到这个而不将到期时间设置为 session 中的字段?作为 ORM,我们无法区分数据与此类特殊字段,因此必须在运行时收集此元数据。
最佳答案
您可以有一个接口(interface)ExpiryManager
来计算这个复杂的逻辑,然后您可以使用这样的注释:
@Expire(logic=MyExpiryManager.class)
Session
注释并不限于整数文字,但这更多的是关于您想要设计的 API 有多奇怪。
关于java - Java 中的动态或运行时实例级元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25025329/