在Play Framework 2.0中使用公共字段

Chr*_*ail 8 java javabeans playframework-2.0

在Play Framework 1.x中,约定是在Java类上使用公共字段.这样做的理由是Play Properties Enhancers的工作方式如下所述:http://www.playframework.org/documentation/1.2.4/model

简而言之,公共字段是"正常的",因为Play会在运行时自动生成setter和getter.这对我来说很有意义,还有其他问题可以解决这个问题.

Play Framework 2.0的工作方式非常不同.没有"属性模拟"功能.也许他们正在考虑稍后添加,但我找不到任何建议.如果没有属性模拟,使用所有公共字段的原始理由就会消失.Play Framework 2.0示例仍然使用公共字段:http: //www.playframework.org/documentation/2.0/JavaEbean

为什么公共领域仍然推荐用于playframework 2.0?这只是开发者在旧版游戏中创建样本的习惯,还是在Play 2.0中仍然推荐使用公共字段的另一个原因?

and*_*lla 4

查看文档: https: //github.com/playframework/Play20/wiki/JavaEbean,Play将为我们生成缺少的访问器。

然而,这种技术有一些警告,最重要的是 ebean 仪器无法在生成 get/setter 上工作...因此可能会发生问题(事务,...)

以下是相关引用:

Play 被设计为自动生成 getter/setter,以确保与期望它们在运行时可用的库(ORM、Databinder、JSON Binder 等)兼容。如果 Play 在 Model 中检测到任何用户编写的 getter/setter,它将不会生成 getter/setter,以避免任何冲突。

注意事项:

(1) 由于 Ebean 类增强是在编译后发生的,因此不要期望 Ebean 生成的 getter/setter 在编译时可用。如果您希望直接使用它们进行编码,可以自己显式添加 getter/setter,或者确保在项目的其余部分之前编译模型类,例如。将它们放入单独的子项目中。

(2) 直接Ebean字段访问的增强(启用延迟加载)仅适用于Java类,不适用于Scala。因此,从 Scala 源文件(包括标准 Play 2 模板)直接进行字段访问不会调用延迟加载,这通常会导致实体字段为空(未填充)。为了确保填充字段,(a) 手动创建 getter/setter 并调用它们,或者 (b) 确保在访问字段之前完全填充实体。

华泰