gpt4 book ai didi

java - 我可以注入(inject)动态创建的对象吗

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:34:06 26 4
gpt4 key购买 nike

我有一个关于依赖注入(inject)的问题。

我有一个类,说:

class MyClass {
MyServiceAPI serviceAPI;
public setSession(Session session) {
serviceAPI = new MyServiceAPI(session);
}
....
}

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 实例被注入(inject)到 MyAnotherClass 中,而 MyClass 中的 serviceAPI 实例是使用 new 创建的。如果我想将 ServiceAPI 注入(inject) MyClass,我可能可以在创建 session 的类中创建它并使用 setter 将其设置为 MyClass。

但问题是我真的不想让 MyAnotherClass 创建 MyServiceAPI 并将其注入(inject) MyClass。我希望 MyAnotherClass 不知道 MyServiceAPI 的存在。

有没有一种方法可以使用像 Guice 或 Spring 这样的依赖注入(inject)器来做到这一点?还是简单的 Java?

非常感谢。

最佳答案

如果您希望在纯 Java 中进行依赖注入(inject),Java 6 可以通过内置的 Java 服务提供者接口(interface)提供一些支持。虽然它需要一些带有 jar 文件等的管道。看看 here for Java SPI

关于java - 我可以注入(inject)动态创建的对象吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10216166/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com