gpt4 book ai didi

java - 推土机 + Spring : MappingException: Dozer Bean Mapper is already initialized

转载 作者:行者123 更新时间:2023-11-30 08:15:38 29 4
gpt4 key购买 nike

我正在尝试在我当前运行 Spring 和 Hibernate 的 Web 应用程序上实现 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() 出现异常。有人可以指出我做错了什么吗?

最佳答案

您不应该在每次调用 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 将其内部属性设置为不允许添加映射或其他重新配置。

关于java - 推土机 + Spring : MappingException: Dozer Bean Mapper is already initialized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28788371/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com