【问题标题】:Spring component-scan not scanning jboss server lib directorySpring组件扫描不扫描jboss服务器lib目录
【发布时间】:2011-10-14 23:42:51
【问题描述】:

我有一个 jar 文件(保存在 jboss-home/server/default/lib 中)和一个 war 文件(保存在 jboss-home/server/default/deploy 中)。 jar 文件包含一个初始化 spring 上下文的 servlet。 servlet 是从 war 文件初始化的。

问题是jar文件中的@Component(和@Service等)注解没有被扫描。它给出了 NoSuchBeanDefinitionException 错误。我在上下文 xml 中声明了以下内容。

<context:component-scan base-package="com.abc.mypack" />

在使用 eclipse 构建 jar 时,我还选择了“添加目录条目”。

如果我更改为基于 xml 的配置,它可以工作。或者,如果我将 jar 文件移动到 war 文件的 WEB-INF/lib,它可以工作。

有没有办法扫描 jboss 服务器 lib 目录中的组件?

我正在使用 spring 3.1 和 Jboss AS 6。

【问题讨论】:

    标签: spring jboss annotations components


    【解决方案1】:

    这些注释不会扫描库。他们扫描包,这意味着包含这些包的库需要在类路径中。

    您所指的库很可能位于不同的类加载器上。

    我建议将 jar 打包到 war 的 WEB-INF/lib 目录中。

    【讨论】:

    • 您好,卡尔,感谢您的回复。正如您所提到的,当我将 jar 放在 WEB-INF/lib 目录中时,它可以工作。但这不是我想要的。我想将 jar 保存在一个公共位置(如服务器/默认值/lib),所有战争都可以访问它。这有可能吗?
    • 好吧,如果库位于不同的类加载器中,Spring 将看不到它并进行组件扫描。
    • 磁盘空间便宜。另外,当不同的应用程序需要不同版本的这个 jar 时会发生什么?把罐子留在战争中。
    • @shrinidhi:我完全同意 ericacm。
    猜你喜欢
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 2013-06-16
    • 1970-01-01
    • 2011-06-28
    • 2015-01-13
    • 1970-01-01
    相关资源
    最近更新 更多