来自多个包的推土机通用映射(通配符?)

时间:2014-01-16 11:43:35

标签: java properties dozer

我可以为多个包中存在的类编写转换器吗?例如,我有comA,它存在于com.package.a.1,com.package.a.2等中.ClassB存在于com.package.b.1,com.package.b.2等.ClassA的每个副本和ClassB有相同的定义。

我尝试过这样的事情,但没有成功

<converter type="com.package.MyConverter">
   <class-a>com.package.a.*.ClassA</class-a>
   <class-b>com.package.b.*.ClassB</class-b>
</converter>

2 个答案:

答案 0 :(得分:1)

我认为你不能。如果从代码的角度考虑它,它将如何知道将该类转换为什么对象?但是,您可以重新使用转换器。 e.g。

<converter type="com.package.MyConverter">
  <class-a>com.package.a.p1.ClassA</class-a>
  <class-b>com.package.b.p1.ClassB</class-b>
</converter>
<converter type="com.package.MyConverter">
  <class-a>com.package.a.p2.ClassA</class-a>
  <class-b>com.package.b.p2.ClassB</class-b>
</converter>

我能想到的另一个可能性是,如果属性都具有相同的名称,您不需要指定转换器,或者在映射中列出它们,Dozer将自动转换具有相同名称的所有内容。

(我说的可能是错的,但这是我在使用Dozer时所处理的事情)

答案 1 :(得分:0)

您可以为自定义com.package.MyConverter映射器要映射的所有类使用接口。所以你只需要定义一次映射:

<converter type="com.package.MyConverter">
   <class-a>com.package.IMyConverterMappable</class-a>
   <class-b>com.package.IMyConverterMappable</class-b>
</converter>