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