【发布时间】:2015-06-17 20:23:10
【问题描述】:
我实现了 spring-boot 应用程序,现在我想将它用作非 spring 应用程序的库。 如何初始化 lib 类以使自动装配的依赖项按预期工作?显然,如果我使用“新”创建类实例,所有自动装配的依赖项都将为空。
【问题讨论】:
-
没有简单或明显的方法可以做到这一点。我什至不确定这样做是否有意义。
-
如果您正确地设计了您的应用程序(即不使用字段注入或其他任何需要 Spring 魔法运行的东西),您应该能够以编程方式手动实例化和连接所有组件。但是,看起来更好的解决方案是将您要共享的部分提取到一个完全不依赖于 Spring 的适当库中。
-
我的应用程序设计“正确”:我没有使用字段注入。它主要使用构造函数注入,在某些情况下(可选参数)设置器注入。但这无济于事,因为组件依赖项是按链进行的。例如,我有带有构造函数参数 Class1 的入口点类。 Class1 具有构造函数参数 Class2。 Class2 具有构造函数参数 Class3 等。在实例化时,我将有类似的内容: new EntryPointClass(new Class1(new Class2(new Class3(...)))) 因此,手动实例化就像用 Java 编写所有 Spring 配置 I有:)
-
@AramAslanyan 也想做同样的事情,如果你能做到,请分享它对社区有很大帮助
-
我不知道您如何将应用程序用作库。这对我来说毫无意义。您将需要更详细地解释您想用至少一些 SSCCE 的外观来做什么。例如,如果您想在另一个应用程序中运行应用程序服务器,则需要考虑端口冲突和共享资源。
标签: spring dependency-injection spring-boot