Java SpringDataMongo DefaultTypeMapper与不同的类加载器存在问题
当从MongoDB映射到java类时,DefaultTypeMapper出现了一些问题。当作为TestNG测试运行时,一切正常。但当我通过IntelliJ IDEA启动应用程序时,我遇到了一个例外:Java SpringDataMongo DefaultTypeMapper与不同的类加载器存在问题,java,spring,mongodb,spring-data-mongodb,Java,Spring,Mongodb,Spring Data Mongodb,当从MongoDB映射到java类时,DefaultTypeMapper出现了一些问题。当作为TestNG测试运行时,一切正常。但当我通过IntelliJ IDEA启动应用程序时,我遇到了一个例外: org.springframework.data.mapping.model.mappingInstanceException:未能实例化com.example.SomeAbstractClass 我调试了DefaultTypeMapper并在第150行中找到: boolean isMoreConc
org.springframework.data.mapping.model.mappingInstanceException:未能实例化com.example.SomeAbstractClass
我调试了DefaultTypeMapper并在第150行中找到:
boolean isMoreConcreteCustomType=rawType==null?true:rawType.isAssignableFrom(documentsTargetType)&&!等于(documentsTargetType)代码>
表达式rawType.isAssignableFrom(documentsTargetType)
仅当rawType类和documentsTargetType类由同一类加载器加载时才为真。我的例子中的表达式(错误地)为false,因为rawType类由RestartClassLoader加载,documentsTargetType由启动器$AppClassLoader加载。因此,isAssignableFrom
计算结果为false,映射失败,出现上述异常
当我在Main.class中添加以下行时。。。
System.setProperty(“spring.devtools.restart.enabled”、“false”)代码>
…一切正常
那么,这是预期的行为还是SpringDataMongo中的bug
问候,,
Sebastian你能格式化代码吗,例外?闻起来像个bug。您是否可以提供一个可复制的示例,例如包含用于复制问题的最小代码的Github存储库?如果超级类位于jar lib中(默认情况下,devtools不会重新加载),而子类位于项目类中(重新加载),则看起来是可复制的。对于这两个类,类加载器将是不同的。使用它是可以修复的,但是在DefaultTypeMapper\getFromCacheOrCreate