我已经创建了一个自定义注释(在Spring 3.05中),效果很好。我想把这个代码带到一个库的一部分,打包在一个jar文件中,所以我不必在我写的每个web应用程序中包含我的自定义注释代码。
但是,我无法让Spring对注释采取行动。我的库jar在我的web应用程序的类路径中,我尝试在applicationContext.xml
中搜索它:
<context:component-scan base-package="my.annotation.pkg" />
使用我的自定义注释注释的字段仍为空。
理想情况下,我希望能够以最少的工作和配置工作,但到目前为止,我还没有取得任何成功。
当我的自定义注释是外部库的一部分时,我错过了哪些部分的Spring接线?
更新
以下是我“解决”它的方式......只需要仔细阅读一下。在每个上下文文件(即applicationContext.xml,dispatch-servlet.xml)中,我添加了一行:
<bean class="my.annotation.CustomInjector" />
...我的CustomInjector implements BeanPostProcessor
。我根据此博客文章中的代码建立了此基础:Implementing Seam style @Logger injection with Spring。
作者说我需要做的就是我做的事情,因为我没有彻底阅读,所以我很难受。但是,为什么要添加所需的bean定义呢?也许Spring注释的配置相似 - 我只是不明白为什么在类路径上使用jar文件是不够的。
答案 0 :(得分:1)
您的自定义注释是否使用@Component注释进行了注释?来自Spring reference manual:
默认情况下,使用@ Component,@ Repository,@ Service,@ Controller注释的类或自身使用@Component注释的自定义注释是唯一检测到的候选组件。
或者,您可以将自定义include-filter添加到XML配置中的component-scan
元素。