Вы также можете использовать Dozer mapping для преобразования POJO в карту и исключения полей. Например, если у нас есть два класса PojoA и PojoB, имеющие двунаправленные отношения, мы определяем отображение следующим образом:
<mapping map-id="mapA" map-null="false">
<class-a>com.example.PojoA</class-a>
<class-b>java.util.Map</class-b>
<field>
<a>fieldA</a>
<b>this</b>
</field>
<field map-id="mapB">
<a>pojoB</a>
<b>this</b>
<b-hint>java.util.Map</b-hint>
</field>
</mapping>
<mapping map-id="mapB" map-null="false">
<class-a>com.example.PojoB</class-a>
<class-b>java.util.Map</class-b>
<field-exclude>
<a>pojoA</a>
<b>this</b>
</field-exclude>
</mapping>
Затем вы определяете bean-компонент, устанавливающий вышеуказанный файл сопоставления бульдозера, как свойство.
<bean id="mapper" class="org.dozer.DozerBeanMapper">
<property name="mappingFiles">
<list>
<value>dozerMapping.xml</value>
</list>
</property>
</bean>
Тогда в классе, где вы сериализуете
public class TestClass
{
@Autowired
DozerBeanMapper mapper;
public Map<String,Object> serializeObject(PojoA pojoA)
{
return ((Map<String, Object>) mapper.map(pojoA, Map.class, "mapA"));
}
}
Инструкция по эксплуатации бульдозера .