Chs*_*y76 7 java spring dependency-injection
今天我在Spring 3.0中偶然发现了一个相当奇怪的问题:
有一个抽象类A及其具体实现A_Impl.A_Impl注释为@RepositorySpring并由Spring自动扫描(<context:component-scan>并且<context:annotation-config/>都在上下文中声明).A并且A_Impl部署在单独的JAR中(不确定是否重要).一切正常.
现在,我正在审查那些代码,并且@Repository在语义上看起来不太合适(有问题的类与持久性无关)所以 - 在我的无限智慧中 - 我决定将其更改为更通用@Component.毋庸置疑,一切都爆发了,让我看起来像一个完全白痴.错误(在Spring上下文初始化期间发生)是Spring的ClassPathResource.getInputStream()方法抱怨A类不存在(它是,我手动检查;加上常规类加载器发现它很好)
没有其他改变.如果我换@Component了@Repository语境初始化,如果我换他们回到它不会出现上述错误.Spring文档声称没有差别之间@Component以及@Repository这显然是一个该死的谎言:-)所以我想-什么是区别?
我一直在使用,@Component没有任何问题。
我想到的唯一一件事(虽然不那么聪明)是你的@Component可能不是春天的。例如,Tapestry 有一个以相同方式命名的注释。其他框架也可能有它。所以检查你的进口。
| 归档时间: |
|
| 查看次数: |
6381 次 |
| 最近记录: |