我在坚持上课时遇到了问题。我有一个名为Scraper的类,它使用一个名为Paginator的接口。 Paginator接口有几种实现,它们将在运行时实例化。所以结构看起来像这样:
class Scraper {
//some code
Paginator paginator
//more code
def Scraper(Paginator paginator){
this.paginator = paginator
}
}
然后有paginator接口的具体实现让我们说paginatorA和paginatorB。所以现在我想尝试做以下事情:
PaginatorA p = new PaginatorA()
Scraper s = new Scaper(p)
s.save(flush:true)
......它得到的是:
Error Error executing script TestApp:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mongoDatastore': Cannot resolve reference to bean 'mongoMappingContext' while setting bean property 'mappingContext';
nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mongoMappingContext': FactoryBean threw exception on object creation; nested exception is java.lang.NullPointerException (Use --stacktrace to see the full trace)
有谁能告诉我该怎么做?我想它与Mapper有关,因为它不知道使用哪个具体的Paginator或如何坚持它?如果是这种情况那么我怎么能告诉框架该怎么做?我试着想出几个小时的解决方案而且非常沮丧,所以任何帮助都会非常感激。
哦,顺便说一下,我也尝试过针对具体的实现(PaginatorA)...这完全正常,因为我假设它与paginator接口有关。
感谢您的回复...
答案 0 :(得分:2)
错误很糟糕,你应该为此提出一个JIRA问题,但从根本上说,我可以看到代码有两个问题:
您的持久化类必须具有任何JavaBean的公共no-args构造函数,方法是添加一个带有您的接口的构造函数,您不再提供一个
你的Scraper类需要将'Paginator'标记为瞬态,以告诉持久性引擎不要试图保持'paginator'属性。由于这是一个自定义界面,因此不知道如何保留它。