【发布时间】:2010-10-05 14:03:29
【问题描述】:
是否可以从 Eclipse 插件内部为 DI 使用 Spring 容器?
我想知道,因为我知道 Eclipse 会在类加载、在插件中查找内容等方面引起很多问题。
该插件旨在作为 JAR 分发。
【问题讨论】:
是否可以从 Eclipse 插件内部为 DI 使用 Spring 容器?
我想知道,因为我知道 Eclipse 会在类加载、在插件中查找内容等方面引起很多问题。
该插件旨在作为 JAR 分发。
【问题讨论】:
是的,但您需要 Spring DM http://www.springsource.org/osgi
【讨论】:
答案是肯定的。您可以使用 Spring DM,但不是必须的。它可能会更好。
我在没有 Spring DM 的情况下做到了,主要关注的是类加载问题(不确定 Spring DM 是否解决了这些问题,但我想应该)。假设您将 Spring JAR 与依赖项捆绑在一个单独的插件中,您将需要使用调用插件的类加载器加载上下文。
例子:
插件 A 依赖于 B。插件 A 启动时,会加载应用程序上下文,调用此加载时,您需要执行以下操作:
Thread.currentThread().setContextClassLoader(PluginAActivator.class.getClassLoader())
这样类的加载将在您自己的类加载器下进行。现在您可以使用ClassPathXmlApplicationContext 从您的类路径加载配置 XML。
一个小提示:默认 ClassPathXmlApplicationContext 在加载时验证您的 XML。您可能希望禁用它或将您的 XML 指向本地模式(而不是 springframework.org 上的标准 Spring 模式),否则,您将连接到 Internet 以在加载时下载模式文件,并且脱机工作将失败。
【讨论】:
您的帖子有代码示例吗? 这将是伟大的,因为我在这附近徘徊了一段时间。
干杯!
【讨论】: