另外,如果它是我使用的语言的一部分,我会感觉好多了。
仅供参考,作为 JDK 6 的一部分,有一个非常简单且功能强大的依赖注入。如果您需要轻量级、直接的依赖注入,请使用它。
使用ServiceLoader类,您可以基于类请求服务(或服务的许多实现):
package dependecyinjection;
import java.util.ServiceLoader;
public abstract class FooService {
public static FooService getService() {
ServiceLoader<FooService> loader = ServiceLoader.load(FooService.class);
for (FooService service : loader) {
return provider;
}
throw new Exception ("No service");
}
public abstract int fooOperation();
}
package dependecyinjection;
public class FooImpl extends FooService {
@Override
public int fooOperation() {
return 2;
}
}
ServiceLoader 如何定义返回的服务实现?
在您的项目文件夹中创建一个名为META-INF/services的文件夹并创建一个名为dependencyinjection.FooService的文件。此文件包含指向服务实现的行。在这种情况下:dependecyinjection.FooImpl
这还不是广为人知。