2016-12-13 7 views
2

Мы создаем граф зависимостей Кинжала 2Кинжала 2 одноэлементные не работают

SessionComponent (область сеанса) --dependson ---> Appcomponent (Singleton сферы) --- dependson ---> UserMangerComponent (незаданный .. Предположим, что это singleton)

Однако, когда я вставляю userManager (зависимость, предоставляемую UserManagerComponent), он не поддерживается как singleton. Каждая инъекция создает новый UserManager. Пожалуйста, помогите ...

Я не могу установить Singleton scope для зависимости.

+0

Вы аннотировали его с помощью @Singleton? – Blackbelt

+0

Если зависимость не аннотируется с какой-либо областью, тогда Кинжал будет каждый раз вводить новый экземпляр. –

+1

Вы должны сделать компонент для каждой области, а модуль по функции – EpicPandaForce

ответ

4

Ваша предлагаемая структура несовместима с тем, как Кинжал управляет областью. Только один компонент в вашем приложении должен быть @Singleton, потому что каждое связывание в компоненте, который не отображается через интерфейс компонента, может быть @Singleton, но полностью инкапсулирован в реализацию компонента. Таким образом, каждый компонент будет содержать свой собственный экземпляр, и вы получите в итоге 2 экземпляра, а не один.

Либо объедините два компонента в один компонент @Singleton, создайте новую область для управления вашим пользователем, либо вручную выполните управление экземплярами для своего пользовательского менеджера.