近来在没有dubbo的情况下分多模块项目,发现mapper.java无法注入,检查许久发现扫描开启了,mybatis配置也正确,包的路径也没问题,着实让人脑壳疼。
最后脑内灵光一闪,发现在没有dubbo的情况下,我是在web导入了service依赖:
<dependency>
<groupId>website-parent</groupId>
<artifactId>website-service</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
这样的话,等于是把service层打包成jar包导入web层,而jar包内的spring配置文件路径就会出现问题。所以要有一些修改:
首先,web层的web.xml中引入spring配置文件使用[classpath*:spring*.xml],导入service层和web层的spring配置文件。
<!--配置文件加载-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring*.xml</param-value>
</context-param>
而后,service层的spring配置文件内导入其他配置文件,如jdbc.properties也会提示未注入,同样修改为[classpath*: *.properties]
<!--注入jdbc.properties-->
<context:property-placeholder location="classpath*:*.properties"/>
这样修改是因为classpath是只会在classpath中查找,而classpath*会在classpath以及jar包内查找。
现在看起来真的是个很简单的问题,却被折磨了一下午,唉。