我正在尝试在我当前运行Spring和Hibernate的webapp上实现Dozer作为桥接模式的帮助,但我认为我做错了什么,因为尝试多次使用DozerBeanMapper实例会给我一个MappingException。
Spring配置:
@Configuration
public class AppConfig {
...
@Bean
public DozerBeanMapper dozerBeanMapper() {
return new DozerBeanMapper();
}
}用法:
@Service
public class FooService {
@Autowired
private DozerBeanMapper mapper;
public void doSomething() {
mapper.addMapping(new CustomRules());
mapper.map(foo, ImmutableFoo.class);
...
}
...
}第一次调用此服务将正常工作,但任何进一步尝试使用它都会在mapper.addMapping()上导致异常。有人能指出我做错了什么吗?
发布于 2015-04-27 19:34:56
您不应该在每次调用doSomething时都添加映射器,即使它可以工作,它的可伸缩性也会降低。在这种情况下,您应该将mapper.addMapping(new Custom Rules());移动到bean实例化。
@Configuration
public class AppConfig {
...
@Bean
public DozerBeanMapper dozerBeanMapper() {
DozerBeanMapper mapper = new DozerBeanMapper();
mapper.addMapping(new CustomRules());
return mapper;
}
}在使用dozer - mapper.map(...)之前,您必须将所有配置都设置为dozer。在第一次使用推土器之后,dozer将其内部属性设置为不允许添加映射或其他重新配置。
https://stackoverflow.com/questions/28788371
复制相似问题