У меня есть вопрос относительно инъекции зависимостей.Могу ли я вставить объект, созданный динамически
У меня есть класс, скажем:
class MyClass {
MyServiceAPI serviceAPI;
public setSession(Session session) {
serviceAPI = new MyServiceAPI(session);
}
....
}
Сеанс создается другой класс, который загружает из базы данных во время выполнения.
class MyAnotherClass {
Myclass myClass;
@Inject
MyAnotherClass(MyClass myClass) {
this.myClass = myClass;
}
public someFunction() {
String key = <read from database>;
Session session = new Session(key);
myClass.setSession();
......
}
}
Как описано, экземпляр МойКласс вводится в MyAnotherClass и экземпляр serviceAPI в MyClass создается с помощью нового. Если я хочу добавить ServiceAPI в MyClass, я могу создать его в классе, где создан сеанс, и с помощью установщика установить его в MyClass.
Но вопрос в том, что я не хочу, чтобы MyAnotherClass создавал MyServiceAPI и вводил его в MyClass. Я хочу, чтобы MyAnotherClass не ожидал существования MyServiceAPI.
Есть ли способ, которым я могу это сделать, используя инъектор depdendency, такой как Guice или Spring? Или просто Java?
Большое спасибо.
Да, похоже, что 'MyClass' следует вводить в' MyAnotherClass'. Кроме того, «MyServiceAPI» следует, вероятно, ввести в «MyClass». Такой вопрос трудно ответить, не зная семантики/намерения вашего кода ... – Torious
Да. Я понимаю, что вы имеете в виду. Извините, вопрос немного плохой. Позвольте мне немного изменить его. – Kevin