依赖 jar 的类中的自动装配注释
Posted
技术标签:
【中文标题】依赖 jar 的类中的自动装配注释【英文标题】:Auto-wiring annotations in classes from dependent jars 【发布时间】:2011-06-23 14:31:52 【问题描述】:我对 Java 比较陌生,所以我希望这不是一个愚蠢的问题。
我在 Eclipse 中有一个 Web 项目,我正试图将它部署到 Tomcat。我在 Eclipse 中有两个依赖项目,它们被编译成 .jar 文件并部署到 /WEB-INF/lib 目录。
这很好,但不幸的是,除非将 .jar 中的类文件提取到 /WEB-INF/classes 目录中,否则 Spring 不会扫描依赖项中的注释。
有没有一种简单的方法可以在构建时进行这种提取?我正在使用 Maven。我暂时写了一个批处理文件来做这个(我在Windows上开发,在Ubuntu上部署)
我确实有关于如何自动化服务器部署的问题,但是,我做错了什么吗?当然,我不是唯一一个与这个问题搏斗的人。
【问题讨论】:
【参考方案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 并解决了这个问题。有时选择太多会让您感到困惑,这就是其中一种情况。
【讨论】:
以上是关于依赖 jar 的类中的自动装配注释的主要内容,如果未能解决你的问题,请参考以下文章