Я новичок в Injection Dependency, и у меня есть сомнения. В моем приложении у меня есть HashMap для хранения встроенных классов (например, кеша) для RetroFit, но теперь я перехожу на DI с Dagger, и я хотел бы знать, как я могу добиться такого же поведения.
Мой код:
private Map<String, Object> restInstances;
public <T> T getRestClient(Class<T> clazz) {
T client = null;
if ((client = (T) restInstances.get(clazz.getCanonicalName())) != null) {
return client;
}
client = restAdapter.create(clazz);
restInstances.put(clazz.getCanonicalName(), client);
return client;
}
После запуска с DI мой класс «модуль»:
@Provides @Singleton
public JobManager providesJobManager(){
Configuration config = new Configuration.Builder(app)
.minConsumerCount(1).maxConsumerCount(3).loadFactor(3).customLogger(new CustomLogger() {
private static final String TAG = "JOBS";
@Override
public boolean isDebugEnabled() {
return true;
}
@Override
public void d(String text, Object... args) {
Log.d(TAG, String.format(text, args));
}
@Override
public void e(Throwable t, String text, Object... args) {
Log.e(TAG, String.format(text, args));
}
@Override
public void e(String text, Object... args) {
Log.e(TAG, String.format(text, args));
}
})
.consumerKeepAlive(120).build();
return new JobManager(app, config);
}
@Provides @Singleton
public RestAdapter providesRestAdapter()
{
restInstances = new HashMap<String, Object>();
return new RestAdapter.Builder()
.setEndpoint("http://192.168.0.23:9000/api")
.setLogLevel(RestAdapter.LogLevel.FULL).build();
}
Итак, как я могу внедрить этот хеш-кеш в свое приложение?
Спасибо