У меня есть приложение на основе guice, которому теперь нужно несколько экземпляров данного типа, поэтому я планирую использовать именованную аннотацию для устранения неоднозначности зависимостей. Однако зависимость этого типа также должна меняться в зависимости от того, какую я получаю.
Для иллюстрации скажем, у меня есть
@Singleton
public class FooCache {
private final FooCacheListener listener;
@Inject
public FooCache(FooCacheListener listener) {
this.listener = listener;
}
// do stuff
}
и затем допустим, что мне нужны 2 отдельных экземпляра, чтобы я мог получить
@ThatOne FooCache
в одном классе и
@ThisOne FooCache
в другом.
Теперь давайте предположим, что в каждом случае мне нужен другой слушатель (возможно, один записывает что-то в базу данных, а другой отправляет уведомление через JMS или в какой-то распределенный кеш). Как бы я это сделал? Я не вижу, чтобы я мог вставить имя в FooCacheListener, так как мне нужно другое имя в одной ситуации по сравнению с другой, тогда как у меня есть только одно место. Единственный способ, которым я могу думать об этом, - это создать подклассы FooCache, но это кажется мне очень неуклюжим подходом.
Приветствие
Matt