情况是这样的:web工程采用了ssh框架,dao和service都是通过annotation方式注入的,工程运行正常。后来把service和dao打成jar放在工程的lib目录下,问题来了,配置没改动,结果就是不能自动注入dao和service。但是如果把dao和service在spring配置文件中通过xml文件配置,这些component能找到。
搜索了一把,发现这个问题比较常见,大部分帖子说的是在打jar包的时候add entity directory,仔细看了下,我的jar包是通过maven打包的,entity directory都在,所以我的问题不是这个。那问题就可能是spring context扫描包的路径不对。
几经周折,发现*上有人说需要在
<context:component-scan base-package="tr"/>这个配置里,加一级目录,即没打jar包的时候是前面说的配置,如果打了jar包,就应该是
<context:component-scan base-package="main.tr"/>,添加了之后发现component自动注入了。 补充一句,我的工程是maven工程。