码迷,mamicode.com
首页 > 编程语言 > 详细

重名spring配置文件可能引起的问题

时间:2015-08-02 21:20:42      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

不知道大家的项目中有没有遇见过这种情况。

项目中总共有A.B.C三个module。A有三个spring配置文件,分别叫做bean.xml,service.xml,db.xml。然后B有两个配置文件,分别叫做service.xml,bean.xml。然后启动项目,spring加载时却发现本在A的service.xml中定义的serviceForA死活实例化不了。而且即使你把serviceForA的配置删掉,并且把项目中引用到的地方全部删掉,又会发现spring报service.xml中有别的bean无法实例化。

最近我就遇见了这种近乎无解的问题。最后发现引起这种问题可能的原因是,spring为A实例化bean,事实上却没有加载A下面的service.xml,而是加载了B下面的service.xml!!!!我当时解压了项目A打成的jar包,发现A项目下的service.xml文件内容与IDE里的内容完全不一样,反而是和B的service.xml长得一样。

深层次分析原因,发现A项目的pom.xml中添加了对B项目的依赖,所以可能spring在加载配置文件的时候,因为对B有依赖,所以决定先去实例化B的bean,先读取到了B项目下面的service.xml文件,然后放到了A的配置文件集合(这是我自己YY的一个概念)中,等读到A项目下的service.xml后,发现已经存在一个名为service.xml的文件,于是不再加载A下面本来的service.xml。于是导致了这个坑了我三天的问题。

解决方案很简单,就是把A项目的service.xml给改个名字,改成serice-A.xml后,重新打包,再去解压jar包,发现config/spring/下果然多了个service-A.xml,讽刺的是service.xml依然安安静静地躺在那。╮(╯▽╰)╭

总之,得到的教训是尽量不要起重复名字的配置文件,即使这两个文件放在不同的module中!

重名spring配置文件可能引起的问题

标签:

原文地址:http://www.cnblogs.com/imlzk/p/4696654.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!