我可以为多个包中存在的类编写转换器吗?例如,我有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>
答案 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>