spring配置文件bean的id值相同加载不上的问题

在用到spring的项目开发中,通常用spring来配置一些东西,比如一些dataSource、controller和service以及dao、定时器timer或者quartz或者配置一些例如velocity模版之类的一些插件,这些类别不同,我们不可能全部写到一个springApplicationContext.xml文件中,那样我们不好维护,所以我们通常都会选择将这些不同类型的东西都配置到分开的spring的文件当中,当然这些分出去的文件也得跟springApplicationContext.xml有一定的联系,在此就不再截图,相信大家都应该采用这样的
但是在我们开发过程或者维护过程中,我们发现我们还要再添加一两个配置文件,然后我们复制一个,改下名字,然后在springAppicationContext.xml中已配置,感觉就OK了,然后重启项目,起来发现有一些功能菜单的链接链接不到controller当中了,报404,检查链接,controller,模版,都没问题,但就是报404,跳不进去controller,这时发现一个规律,在某一个配置文件中配置的所有的controller都跳不进去了,这个肯定不止是巧合,于是开始排查,这个配置文件和其他spring.xml有何不同,最后终于找到原因,在添加新spring的配置文件的时候,由于是copy的这个,然后改了名字,改了里面的controller的配置,但是这个配置文件的bean的id没有注意什么作用,没有改,于是造成了项目中启动时检测到好几个重复的beanid的spring的配置文件,于是spring按照自己的机制,按顺序将这些重复的加载了,前面的就会被覆盖,于是造成了前面所述问题,当然解决办法就是把这几个bean的id设置成不同的值,重启,OK了
在spring的加载机制中是不允许有两个相同bean的id的配置文件的,所以我们以后开发一定要注意。

猜你喜欢

转载自1006836709.iteye.com/blog/1685130
今日推荐