SpringDataMongo DefaultTypeMapper存在不同类加载器的问题

时间:2017-02-02 13:55:44

标签: java spring mongodb spring-data-mongodb

从MongoDB映射到java类时,我遇到了DefaultTypeMapper的一些问题。作为TestNG测试运行时,一切都很好。但是当我通过IntelliJ IDEA启动应用程序时,我得到一个例外:

org.springframework.data.mapping.model.MappingInstantiationException: Failed to instantiate com.example.SomeAbstractClass

我调试了DefaultTypeMapper,在第150行中找到了:

boolean isMoreConcreteCustomType = rawType == null ? true : rawType.isAssignableFrom(documentsTargetType) && !rawType.equals(documentsTargetType);

表达式rawType.isAssignableFrom(documentsTargetType)仅在rawType类和documentsTargetType类由同一个类加载器加载时才为true。在我的情况下,表达式(错误地)为false,因为rawType类由 RestartClassLoader 加载,documentsTargetType由 Launcher $ AppClassLoader 。所以isAssignableFrom的计算结果为false,映射因上述异常而失败。

当我将以下行添加到Main.class时...... System.setProperty("spring.devtools.restart.enabled", "false"); ......一切都很好。

那么,这是预期的行为还是spring数据中的错误mongo?

此致 塞巴斯蒂安

0 个答案:

没有答案