【发布时间】:2023-03-11 15:20:01
【问题描述】:
我有一个关于依赖注入的问题。
我有一堂课,说:
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();
......
}
}
如前所述,MyClass 实例被注入到 MyAnotherClass 中,而 MyClass 中的 serviceAPI 实例是使用 new 创建的。如果我想将 ServiceAPI 注入 MyClass,我可以在创建会话的类中创建它,并使用 setter 将其设置为 MyClass。
但问题是我真的不想让 MyAnotherClass 创建 MyServiceAPI 并将其注入 MyClass。我希望 MyAnotherClass 不知道 MyServiceAPI 的存在。
有没有办法可以使用 Guice 或 Spring 等依赖注入器来做到这一点?还是简单的 Java?
非常感谢。
【问题讨论】:
-
是的,看起来应该将
MyClass注入MyAnotherClass。此外,MyServiceAPI可能应该注入到MyClass中。如果不知道代码的语义/意图,这种问题很难回答...... -
是的。我明白你的意思。抱歉,这个问题有点糟糕。让我稍微改变一下。
标签: java spring dependency-injection guice