gpt4 book ai didi

java - 从另一个 jar 添加到 spring 接口(interface)实现

转载 作者:行者123 更新时间:2023-12-01 13:38:33 26 4
gpt4 key购买 nike

我有一个“core”模块,它有一个接口(interface)“DbService”。该接口(interface)的实现位于另一个模块“MsSqlDbService”内(出于不同的目的,我有许多“DbService”的实现,所以我只需将“正确的”jar 放在“运行我的程序之前的正确位置)

要加载“DbService”,我使用标准 java 服务加载器 java.util.ServiceLoader<DbService>

所以我想知道:有没有办法让我的 Spring 容器管理“DbService”?因为现在 spring 容器为我管理实际加载“DbService”实现的类,而不是管理“DbService”本身。

最佳答案

(for different purposes I have many implementation of "DbService", so I just place "right" jar in the "right" place before running my program)

如果我理解正确的话,您有多个 JAR,它们都包含同一接口(interface)的实现。您希望 Spring 在部署时选择类路径上的任何一个,然后将所有内容正确地自动连接在一起?

Spring 绝对可以用作“穷人的插件框架”来完成此类事情:

1) 在您的主项目中,将其添加到您的上下文中:

<import resource="classpath:applicationContext-dbService.xml"/>

2) 在每个 JAR 中,创建一个名为 applicationContext-dbService.xml 的文件。对于您提供的 SQL Server 示例,它看起来像这样。

<bean id="msSqlDbService" class="com.foo.MsSqlDbServiceImpl"/>

3) 当加载主上下文时,Spring 将扫描类路径中名为 applicationContext-dbService.xml 的文件。然后处理其中定义的任何 bean。假设部署时类路径上只有一个“插件”JAR,您将能够将 DbService 实例 Autowiring 到主项目中的任何内容中。

关于java - 从另一个 jar 添加到 spring 接口(interface)实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21044912/

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