Я знаю, что есть учебники, как определить синглтон с Module
.Но мой вопрос не совсем об этом.Я имею в виду, что Dagger также предоставляет способ сделать класс инъецируемым для компонента Android путем аннотирования пустого конструктора этого класса без объявления чего-либо в Module
, верно?например,
public class MyApi {
@Inject
public MyApi(){
}
}
Итак, я могу ввести MyApi
в Fragment
с помощью:
class MyFragment extends Fragment {
@Inject
protected MyApi myApi;
...
}
Таким образом, MyApi
не нужно объявлять вручную вModule
.Кинжал понимает это.
Мой вопрос: хочу ли я, чтобы MyApi
был синглтоном, мог бы я просто добавить еще одну аннотацию вроде:
public class MyApi {
@Inject
@Singleton
public MyApi(){
}
}
Если бы кинжал понял, что это должно бытьсинглтон?Или я должен объявить в Module
как:
@Module
public class MyModule {
@Provides
@Singleton
MyApi providesMyApi() {
return new MyApi();
}
}
?