我有一个小代码生成问题。 我有一个EJB3后端,它将DTO对象提供给前端。前端使用可配置的绑定过程将DTO的属性映射到其表单。 目前,他们通过在属性配置中将属性指定为字符串来完成它。绑定实现使用反射来访问属性。 听起来不错,但问题是,每次我们在DTO中更改属性名称时,这都不会导致前端出现编译错误,因为它们只有字符串。
我现在正在寻找一种方法为类的每个属性创建一个字符串常量,前端可以使用它来将属性映射到它们的表单,这样如果我在dto属性中进行了更改,它们就会出现编译错误
示例如何:
public class CarDTO {
private String vendor;
private String name;
public String getVendor() {}
public String getName() {}
[..]
}
应该如何:
public class CarDTO {
public static final String VENDOR = "vendor";
public static final String NAME = "name";
private String vendor;
private String name;
public String getVendor() {}
public String getName() {}
[..]
}
我一直在寻找能够做到这一点但却没有成功的maven插件。是否有人会发现可以做类似事情的工具?
提前致谢
马丁
答案 0 :(得分:0)
我有一个使用类似前端方法访问域类的应用程序,但我的域名完全是通过Eclipse Xtext实现的DSL创建的,也可以在maven构建中使用。 xtext发行版中有一个示例Java域DSL项目,它很容易从那里开始。
这肯定不是一个快速的“只使用maven插件”解决方案,但是一旦你进入Xtext它会得到回报,特别是如果你有很多域类或很多类似的项目。
从我的域DSL我通过代码模板和xtext生成器项目创建了三个类:
在抽象域类中,我有所有getter和setter以及简单的持久性内容,在具体的域类中是更复杂的东西,测试类代表它自己。
答案 1 :(得分:0)
修改现有类比创建新类更困难。
JPA采用了一种有趣的方法来创建CarDTO_
类来解决这个问题。有关详细信息,请参阅http://www.hibernate.org/subprojects/jpamodelgen.html。这种方法更容易。您可以查看实现代码生成的hibernate maven插件。
如果你真的想修改现有的类,那么我建议使用类似于Spring Roo的方法使用AspectJ,其中方面包含生成的代码。
已编辑(使用AspectJ的示例)
在这种情况下,我们使用AspectJ 类型间声明,使您可以修改现有类。
aspect CarAspect
{
public static final String CarDTO.VENDOR = "vendor";
public static final String CarDTO.NAME = "name";
}
在maven中实现这个,你需要
CarAspect
此外,Eclipse对AspectJ有很好的支持,所以你也可以在那里使用它。