我在使用Java的Play 2 Framework v.2.1.1中是新的,我正在寻找在不重复代码的情况下完成以下操作的最佳方法。
为了简化,我有一个使用外部API的Play 2后台办公室。我不管理这个API,但是我调用REST服务来执行api上的操作。
这个API的对象与Play 2 Model对象完全相同。但是我不想复制api对象来添加Play、validations和其他注释。
是否有任何方法可以使用配置文件添加这类行为?例如,我在考虑一些类似Hibernate hbm的东西。
例如:
非托管api中的对象:(为了简单起见,我省略了getter和setter)
public class Entity{
public String field1;
public String field2;
}
我想要避免的对象:(为了简单起见,我省略了getter和setter)
public class Entity1{
@Required
@NonEmpty
@MinLength(3)
public String field1;
@Required
@NonEmpty
public String field2;
}
Config示例:(我需要这样的东西)
<class name="Entity1">
<property name="field1" >
<required/>
<nonEmpty/>
<minLength value="3"/>
</property>
<property name="field2" >
<required/>
<nonEmpty/>
</property>
</class>
使用注释似乎比使用xmls或任何其他配置文件更好,所以我不一定要使用配置文件,我愿意接受任何解决这个问题的建议。
谢谢
发布于 2014-09-24 22:34:15
我看不出在像XML这样的非类型文件描述符中复制API模型比使用typesafe语言更好。此外,我不想将我的模型和应用程序从我控制的API中耦合到一个模型中。
我认为在Java/Scala中复制模型并使用简单的bean复印机(如dozer )在两者之间移动要好得多。
发布于 2013-08-02 10:54:25
一个问题是ebean作为持久性提供者--在ebean中,没有办法将bean持久性配置具体化,因为hibernate ( sql查询除外)是可能的。持久性提供程序的切换是否可能?游戏似乎允许这样做。
由于您编写的代码无法修改实体源代码,并且不希望复制源代码,所以我看到的唯一其他可能性是字节码增强。
您需要的是一个允许您在xml文件中外部化注释的库。这个库将使用插装api,在jvm状态下读取xml文件,并修改每个列出的类的字节码,以便在运行时向类和字段添加注释。
这种方法有两个问题:
第一个问题是简单而有趣的部分,例如https://today.java.net/pub/a/today/2008/04/24/add-logging-at-class-load-time-with-instrumentation.html。使用javaassist,很容易将注释添加到类和字段中。从xml到注释的映射是直接的。这将是一个很好的开源项目。
第二个问题看起来要困难得多,因为您必须安装注释代理,以便在play和ebean开始解析注释之前执行它。
发布于 2014-01-16 10:26:42
我不清楚为什么不能在自己的应用程序中添加注释,但是如果您有这样的约束,为什么不直接扩展类、重写变量、添加注释并将其用作EBean模型呢?
https://stackoverflow.com/questions/16780338
复制相似问题