Guice инъекция примитива не удается через провайдера даже после привязки - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть класс, который выглядит как

class MyClass {
    private final int size;

    @Inject
    public MyClass(final int size) {
        this.a = a;
    }
}

Мой класс модуля, который предоставляет экземпляр MyClass, выглядит как

public class MyClassModule extends AbstractModule {

@Override
protected void configure() {
    bind(Integer.class).annotatedWith(Names.named("size")).toInstance(1000);
}

@Provides
@Singleton
public MyClass providesMyClass(@Named("size") int size) {
    return new MyClass(size)
}

Когда мой класс приложения использует объект MyClass Я вижу эту ошибку -

 com.google.inject.ConfigurationException: Guice configuration errors: | 1) Could not find a suitable constructor in java.lang.Integer. Classes must have either one (and only one) constructor annotated with @Inject or a zero-argument constructor that is not private. |   at java.lang.Integer.class(Integer.java:52) |   while locating java.lang.Integer |     for parameter 0

Где происходит ошибка?(Не дубликат this , поскольку я не внедряю переменную непосредственно в класс, а через поставщика)

...