Spring中没有@Inject或默认构造函数发现错误

时间:2015-10-08 14:04:39

标签: java eclipse spring inject

我的代码相当简单,并且被Eclipse外化。

public class BuchAnalysisPresenter extends
            Presenter<BuchAnalysisPresenter.MyView, BuchAnalysisPresenter.MyProxy>
            implements BuchAnalysisUiHandlers {
        interface MyView extends View, HasUiHandlers<BuchAnalysisUiHandlers> {

            SimplePanel getMain();
        }

        @ContentSlot
        public static final Type<RevealContentHandler<?>> SLOT_BUCHNR = new Type<RevealContentHandler<?>>();

        @NameToken(NameTokens.buchnummer)
        @ProxyStandard
        interface MyProxy extends ProxyPlace<BuchAnalysisPresenter> {
        }

        @Inject
        VerlagServiceAsync verlagServiceAsync;

        @Inject
        BuchAnalysisPresenter(EventBus eventBus, MyView view, MyProxy proxy) {

            super(eventBus, view, proxy, HomePagePresenter.SLOT_SetGraphContent);
            getView().setUiHandlers(this);
        }
    }

但我收到编译错误说:

Unable to create or inherit binding: No @Inject or default constructor found for de.it2media.dps.statistics.client.application.buchnranalysis.BuchAnalysisPresenter$MyView

正如您在代码中看到的那样,实际上有一个构造函数BuchAnalysisPresenter@Inject注释。

我对Spring很新,并且不知道为什么会发生这种情况。

3 个答案:

答案 0 :(得分:1)

我找到了解决方案。我只需要调用install()的{​​{1}}方法,并像这样初始化我的模块GinBinder。没有必要进行其他更改。

BuchAnalysisModule

答案 1 :(得分:0)

您是否在上下文中定义了MyView类型的bean?如果没有,Spring将尝试实例化一个,这将不适用于接口。

解决此问题的两种可能方法:

  1. 在Spring上下文中定义适当类型的bean
  2. 更改构造函数参数的类型:

    BuchAnalysisPresenter(EventBus eventBus, MyViewImpl view, MyProxy proxy)
    

答案 2 :(得分:0)

在我的情况下,问题是我在我的View类中使用了错误的HashMap实现,如下所示:

Map<String, String> map = new HashMap<String, String>();
  

问题在于导入的课程

我正在导入正确的Map接口但错误的HashMap类

进口就像:

import java.util.Map;
import com.google.gwt.dev.util.collect.HashMap;

我用以下内容替换了HashMap,它起作用了:)

import java.util.HashMap;