У меня есть класс (CustomConnectionProvider
), который будет создан библиотекой сторонних разработчиков (спящий режим) с использованием class.forName().newInstance()
. Мне нужно ввести управляемую зависимостью, указанную MyDatabaseFactory
, которая предоставит источники данных для многопользовательской аренды.Inject guice dependency в классе non guice
Я не могу напрямую @Inject
MyDatabaseFactory, потому что CustomConnectionProvider
не управляемый компонент. И я не могу контролировать, как он создается.
Я только начал с Guice как часть приложения Play. Любые примеры или идеи будут оценены, я ищу решение, такое как ServiceLocator
.
Fixed для конкретного случая К счастью, Play.application()
предоставляет статический метод для получения injector
, и я использую его, чтобы получить экземпляр моей фабрики. Я все еще хочу знать, должен ли я исправить это без игры.
Обновление для игры 2.5 Play.application()
осуждается в 2.5. Предлагаем использовать статическую инъекцию.
Эй, это спящий режим? Если это так, существует: https://github.com/google/guice/wiki/GuicePersist, который является моделью guice для спящего режима. Если вам нужно сделать это вручную, вы должны создать entitymanager (hibernate stuffs) в модуле, где вы создаете все остальное. Таким образом, вы получите постоянную настойчивость в управлении. У меня есть пример для моего дела на последнем, но я не использую Play – pandaadb
@pandaadb, это не относится к Hibernate. Он специфичен для ввода объекта в другой класс, который вообще не инициализируется Guice, а инициализация этого класса находится в некоторой библиотеке третьей стороны. –