Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带Spring IOC的Dozer mapper单例实例_Java_Spring_Singleton_Dozer - Fatal编程技术网

Java 带Spring IOC的Dozer mapper单例实例

Java 带Spring IOC的Dozer mapper单例实例,java,spring,singleton,dozer,Java,Spring,Singleton,Dozer,在web应用程序中,我使用dozer mapper(5.3.2)执行一些对象到对象的映射 DozerBeanMapper是使用SpringBean定义实例化的。映射文件在spring上下文xml中作为属性提供 <bean id="idmToBoMPersonMapper" class="org.dozer.DozerBeanMapper" lazy-init="false" scope="singleton" > <property name="mappingFiles

在web应用程序中,我使用dozer mapper(5.3.2)执行一些对象到对象的映射

DozerBeanMapper是使用SpringBean定义实例化的。映射文件在spring上下文xml中作为属性提供

<bean id="idmToBoMPersonMapper" class="org.dozer.DozerBeanMapper" lazy-init="false" scope="singleton" >
    <property name="mappingFiles" value="config/IiIdmToBoMPersonMapping.xml"/>
</bean>
这与我有关,我希望映射器只创建一次

我已经尝试在Springbean配置中显式地使用scope=“singleton”,但这也没有帮助


有什么建议让我试试吗?

我最好使用Spring与Dozer的集成,即DozerBeanMapperFactoryBean,有关更多详细信息,请参阅文档:

   <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>


您如何使用映射器生成信息日志消息?@Andrei Stefan-我只是将Log4j ConsoleAppender与rootLogger级别的信息一起使用,我想知道的是,正如您所说的“每次代码使用映射器时”,那是什么代码?如何让映射器一次又一次地“初始化”自己?@andrestefan-我几乎没有JAX-RS服务。它们都有一个使用Autowire注入的映射器实例。对于任何JAX-RS服务调用,我都会得到这个信息日志。这很奇怪。该行为听起来像是将该映射器用作原型实例,而不是单例。或者,您没有将您向我们展示的映射器或您认为正在注入的映射器注入到这些服务中。您是否手动(使用
new
)创建您在服务中注入的映射器?你能展示一下注射的代码吗?好的,谢谢,我会试试这个,看看这是否有助于避免重复注射。我试过这个,运气不好。也许,对这一点的更多分析暗示着春季国际奥委会scope=“singleton”不是工作期。虽然不确定,但仍要尝试在构造函数中使用一些调试语句。
   <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>