У меня есть класс, из которого экземпляры должны быть созданы (и уничтожены) для каждого запроса (dbSession в моем примере) и некоторые другие классы, которые используют экземпляры объекта запроса. Как это:Распространение области с помощью Guice
webservice --> repository --> dao --> dbSession
(-> означает использование)
Но тогда у меня есть подобный случай использования, но dbsession не должен быть связан с запросом. Например:
webservice --> otherService --> repository --> dao --> dbSession
В настоящее время класс dbSession связан с запросом. Для реализации другого варианта использования сеанс db не должен быть связан с запросом. Я мог бы использовать квалификаторы, чтобы сделать это, но затем мне нужно дублировать набор методов (необходимых) для обоих областей.
Итак, я ищу другое решение. Можно ли распространять области? Я имею в виду, что зависимости вводятся объектами области цели инъекции?
@request webservice --> @myScope otherService --> @myScope repository --> @myScope dao --> @myScope dbSession
В примере, все зависимости от otherService должен быть в том же объеме, как otherService (вызов otherService является асинхронной).
Возможно ли это с Guice? И просто из любопытства: возможно ли это с CDI?
Похож на случай проблемы с ногами робота: https://github.com/google/guice/wiki/FrequentlyAskedQuestions#how-do-i-build-two-similar-but-slightly-different-trees-of -объекты –