Java 如何使用带弹簧靴的推土机?
我正在做一个Spring Boot项目。我只有注释配置。我想包括将实体转换为DTO和DTO转换为实体的推土机。我在dozer网站上看到,他们解释说我必须在SpringXML配置文件中添加以下配置。因为我并没有xml文件,而是注释配置Java类,所以我不知道如何将其转换为Java配置类Java 如何使用带弹簧靴的推土机?,java,spring,annotations,dto,dozer,Java,Spring,Annotations,Dto,Dozer,我正在做一个Spring Boot项目。我只有注释配置。我想包括将实体转换为DTO和DTO转换为实体的推土机。我在dozer网站上看到,他们解释说我必须在SpringXML配置文件中添加以下配置。因为我并没有xml文件,而是注释配置Java类,所以我不知道如何将其转换为Java配置类 <bean id="org.dozer.Mapper" class="org.dozer.DozerBeanMapper"> <property name="mappingFiles">
<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>
dozer-global-configuration.xml
dozer-bean-mappings.xml
more-dozer-bean-mappings.xml
如果有人能给我举个例子,那将非常有用。谢谢我觉得这样应该行得通:
@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;
}
...
}
@配置
公共类配置{
@Bean(name=“org.dozer.Mapper”)
公共dozerBean映射dozerBean(){
List mappingFiles=Arrays.asList(
“推土机全局配置.xml”,
“dozerbean mappings.xml”,
“更多dozer bean mappings.xml”
);
DozerBeanMapper dozerBean=新的DozerBeanMapper();
setMappingFiles(mappingFiles);
返回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;
使用推土机5.5.1更新
在推土机5.5.1中,删除了推土机BeanMapperFactoryBean。因此,如果您想使用更新版本,您需要执行以下操作:
@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;
}
使用下面的例子
mapper.map(source_object, destination.class);
例如。
map(admin,UserDTO.class) 以防有人想避开xml dozer文件。您可以直接在java中使用生成器。对我来说,这是在Spring上下文中进行注释的方式 有关更多信息,请参阅
在我的情况下,它更有效(至少第一次)。没有做任何基准测试或任何事情。感谢您的建议。这就是我正在做的。这很好,但如果你有20个字段要映射,你会重复这个。字段(“id”,“id”)。字段(“name”,“name”);20次?你可以试着在你的课堂上使用注释。我的理解是,我们不必在所有字段中都使用注释;私有字符串名称;在目标类中,所有字段都将被映射,即使我们只有一个字段被映射@映射(“二进制数据”)私有字符串数据;我没有试过,但这是我的理解。如果需要的话,您可以排除字段。这里的聚会迟到了,但是我在dozer 5.5.1版本中找不到org.dozer.spring包。DozerBeanMapperFactoryBean是否已被替换/移动?@sMaN是的,它已在Dozer 5.5.1中删除。可以通过使用:
new DozerBeanMapper(mappingFileUrlList)
稍微改进。为什么不使用DozerBeanMapperSingletonWrapper.getInstance()
?
mapper.map(source_object, destination.class);
@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");
}
};