【问题标题】:Auto-wiring annotations in classes from dependent jars依赖 jar 的类中的自动装配注释
【发布时间】:2011-06-23 14:31:52
【问题描述】:

我对 Java 比较陌生,所以我希望这不是一个愚蠢的问题。

我在 Eclipse 中有一个 Web 项目,我正试图将它部署到 Tomcat。我在 Eclipse 中有两个依赖项目,它们被编译成 .jar 文件并部署到 /WEB-INF/lib 目录。

这很好,但不幸的是,除非将 .jar 中的类文件提取到 /WEB-INF/classes 目录中,否则 Spring 不会扫描依赖项中的注释。

有没有一种简单的方法可以在构建时进行这种提取?我正在使用 Maven。我暂时写了一个批处理文件来做这个(我在Windows上开发,在Ubuntu上部署)

我确实有关于如何自动化服务器部署的问题,但是,我做错了什么吗?当然,我不是唯一一个与这个问题搏斗的人。

【问题讨论】:

    标签: java eclipse spring build maven


    【解决方案1】:

    据此Spring issue, 如果您在 Eclipse 中使用 Export... > Java > JAR file 向导创建 JAR 文件,那么您必须选中 Add directory entries 复选框(默认情况下未选中) 用于 Spring 的组件扫描以在 JAR 文件中查找组件。

    【讨论】:

      【解决方案2】:

      我认为 spring 会扫描整个类路径,您只需提供:

      <context:component-scan base-package="org.example"/>
      

      有注释in the docs

      类路径包的扫描需要类路径中存在相应的目录条目。当您使用 Ant 构建 JAR 时,请确保您没有激活 JAR 任务的仅文件开关。

      【讨论】:

        【解决方案3】:

        既然你提到你也在使用注释

         <context:annotation-config/> 
         <context:component-scan base-package="org.example"/>
        

        是您在 example*.xml 文件中需要的内容

        【讨论】:

        • 在使用 context:component-scan 时不是必需的,因为 component-scan 也会扫描注释
        【解决方案4】:

        @Chin Huang,

        非常感谢您的回答。

        正在使用 Eclipse 生成 .jar,但我从未想过这可能是问题所在。

        我使用 ANT 生成了 .Jar 并解决了这个问题。有时选择太多会让您感到困惑,这就是其中一种情况。

        【讨论】:

          猜你喜欢
          • 2015-04-27
          • 1970-01-01
          • 1970-01-01
          • 2012-07-03
          • 2021-07-17
          • 1970-01-01
          • 2017-09-07
          • 1970-01-01
          相关资源
          最近更新 更多