2012-11-10 19 views
5

EDIT: Un nuovo lib è stato introdotto che chiariscono la cosa per le nuove versioniDozer e Spring integrazione

A partire dalla versione 5.5.0 di integrazione primavera arriva nel modulo aggiuntivo dozer-primavera.


Hi there Sono relativamente nuovo per Dozer e primavera e un po 'confuso su come mettere quella in atto.

Dal sito dozer: http://dozer.sourceforge.net/documentation/usage.html

Primavera integrazione ...

<bean id="mapper" class="org.dozer.DozerBeanMapper"> 
    <property name="mappingFiles"> 
    <list> 
     <value>dozer-global-configuration.xml</value>    
     <value>dozer-bean-mappings.xml</value> 
     <value>more-dozer-bean-mappings.xml</value> 
    </list> 
    </property> 
</bean> 

Ora da http://dozer.sourceforge.net/documentation/springintegration.html:

<bean class="org.dozer.spring.DozerBeanMapperFactoryBean"> 
    <property name="mappingFiles" value="classpath*:/*mapping.xml"/> 
    <property name="customConverters"> 
     <list> 
      <bean class="org.dozer.converters.CustomConverter"/>  
     </list> 
    </property> 
    <property name="eventListeners"> 
     <list> 
      <bean class="org.dozer.listeners.EventListener"/> 
     </list> 
    </property> 
    <property name="factories"> 
     <map> 
      <entry key="id" value-ref="bean-factory-ref"/> 
     </map> 
    </property> 
</bean> 

Quindi non sono davvero sicuro su quale modo dovrei usarlo. Il mio obiettivo è di avere un oggetto mapper nelle mie classi di business che convertirà Business Objects in DTO (e al contrario). Quindi penso che dovrebbe essere solo un'iniezione di dipendenza di base?

Grazie per qualsiasi aiuto.

risposta

9

Entrambi sono approcci validi, basta iniettare questo mapper come dipendenza nella classe servizio responsabile per la mappatura, ad esempio:

@Service 
public class MyMappingService{ 
@Autowired DozerBeanMapper dozerBeanMapper; 
} 

Con DozerBeanMapperFactoryBean l'approccio in questo senso dovrebbe funzionare:

<bean class="org.dozer.spring.DozerBeanMapperFactoryBean"> 
.... 
</bean> 

Questo restituisce un'istanza di mapper, quindi immetti semplicemente un tipo di mapper in questo modo:

@Service 
public class MyMappingService{ 
@Autowired Mapper dozerBeanMapper; 
} 
+0

La tua mente mi sta dicendo la differenza tra usare Bean Mapper Factory Bean invece del mapper direttamente? Forse le opzioni di configurazione? Grazie comunque, vado a fare un test con la prima proposizione –

+0

DozerBeanMapperFactoryBean è un bean factory Spring, che restituisce istanze di Mapper e suona come se fosse più adatto all'iniezione di dipendenze Spring, ho modificato la risposta con un esempio. –

+0

Finalmente sono andato con la soluzione DozerBeanMapper. Grazie. –