У меня есть приложение на основе графического интерфейса, которое теперь требует нескольких экземпляров заданного типа, поэтому я планирую использовать именованную аннотацию для устранения неоднозначности зависимостей. Однако зависимость этого типа также должна меняться в зависимости от того, какой я получаю.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
как-то я пропустил это в документах, вот что я ищу. Благодарю. – Matt