我想创建一个java API来连接Restful API。 为了处理依赖关系,我想使用Spring。
但是,我在互联网上看到的所有例子都谈到了DI容器,整个系统就像服务一样运行。
我需要的是: 为用户提供一些类可以连接到这样的Restful API,但这些类的内部依赖关系由Spring解决。不用说,这个框架不会启动任何应用程序服务器。它将提供一些有用的类和接口来联系RestAPI。
这可能吗?
提前致谢!
答案 0 :(得分:0)
情况
假设我已经编写了一个提供名为Car的类的API。用户可以在他们的项目中使用此Car类。但是Car类依赖于另外两个类:Wheel和Engine。我想要的是自动注入的最后两个类,而无需用户实例化它。
对这种情况的简短回答是:不。 原因是有人必须开始春天。 你有一些选择。
您可以创建某种为您启动Spring的初始化类。 API用户需要这样做:
myAPI.initialize();
一样简单。这是一个巨大的(imho)缺点,你的API中的每个类都需要检查是否发生了初始化。
通过工厂公开课程。在这种情况下,API用户会执行以下操作:MyFactory.createCar(...parameters...);
使用这种技术,Spring初始化将对用户隐藏,因为你可以在MyFactory类的静态初始化块中加载Spring。
而不是工厂模式, 使用构建器模式来实例化您的类。 这实际上是工厂解决方案的变体, 除了每个Builder都会调用一些隐藏(也许是包访问)类的静态初始化方法,该类启动Spring一次。
如果你只想要DI, 春天可能不适合你(它可能是矫枉过正的)。 Google guice是一个"只是" DI工具可能很合适。 即使有guice, 有人还需要启动它, 所以解决方案1-3将适用。