私はSpring Bootプロジェクトに取り組んでいます。注釈の設定があります。エンティティをDTOに変換し、DTOをエンティティに変換するドーザーを含めたいと思います。私はブルドーザーのWebサイトで、Spring xml構成ファイルに次の構成を追加する必要があると説明しています。私はxmlファイルではなく、アノテーション構成Javaクラスを持っているので、これをJava構成クラスに変換する方法がわかりません。
<bean id="org.dozer.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>
誰かが私に例を挙げてもらえればそれは非常に役に立ちます。ありがとう
私はこのようなものがうまくいくと思います:
@Configuration
public class YourConfiguration {
@Bean(name = "org.dozer.Mapper")
public DozerBeanMapper dozerBean() {
List<String> mappingFiles = Arrays.asList(
"dozer-global-configuration.xml",
"dozer-bean-mappings.xml",
"more-dozer-bean-mappings.xml"
);
DozerBeanMapper dozerBean = new DozerBeanMapper();
dozerBean.setMappingFiles(mappingFiles);
return dozerBean;
}
...
}
DozerBeanMapperFactoryBean
の代わりにDozerBeanMapper
を使用している場合は、次のようなものを使用できます。
@Configuration
public class MappingConfiguration {
@Bean
public DozerBeanMapperFactoryBean dozerBeanMapperFactoryBean(@Value("classpath*:mappings/*mappings.xml") Resource[] resources) throws Exception {
final DozerBeanMapperFactoryBean dozerBeanMapperFactoryBean = new DozerBeanMapperFactoryBean();
// Other configurations
dozerBeanMapperFactoryBean.setMappingFiles(resources);
return dozerBeanMapperFactoryBean;
}
}
これにより、マッピングを自動的にインポートできます。マッパーを挿入して使用するだけではありません。
@Autowired
private Mapper mapper;
Dozer 5.5.1で更新
Dozer 5.5.1では、DozerBeanMapperFactoryBeanが削除されました。したがって、更新されたバージョンを使いたい場合は、以下のようなことを行う必要があります。
@Bean
public Mapper mapper(@Value(value = "classpath*:mappings/*mappings.xml") Resource[] resourceArray) throws IOException {
List<String> mappingFileUrlList = new ArrayList<>();
for (Resource resource : resourceArray) {
mappingFileUrlList.add(String.valueOf(resource.getURL()));
}
DozerBeanMapper dozerBeanMapper = new DozerBeanMapper();
dozerBeanMapper.setMappingFiles(mappingFileUrlList);
return dozerBeanMapper;
}
上記のようにマッパーを注入します
@Autowired
private Mapper mapper;
以下の例のように、
mapper.map(source_object, destination.class);
例えば。 mapper.map(admin、UserDTO.class);
誰かがxml dozerファイルを避けたい場合に備えて。 Javaで直接ビルダーを使用できます。私にとっては、Springアノテーションのアノテーションを使用する方法です。
詳細は mapping api dozer を参照してください
@Bean
public DozerBeanMapper mapper() throws Exception {
DozerBeanMapper mapper = new DozerBeanMapper();
mapper.addMapping(objectMappingBuilder);
return mapper;
}
BeanMappingBuilder objectMappingBuilder = new BeanMappingBuilder() {
@Override
protected void configure() {
mapping(Bean1.class, Bean2.class)
.fields("id", "id").fields("name", "name");
}
};
私の場合、それはより効率的でした(少なくとも初めて)。ベンチマークも何もしませんでした。