Spring拦截器执行了两次

2014-11-24 11:25:13 ? 作者: ? 浏览: 1

今天在调试代码的时候,发现有个拦截器被执行了两次,很是奇怪,开始以为是即配置了注解的方式,同时又配置了xml配置文件造成的问题,可是仔细检查后并没有配置注解,只配置了xml文件。


还是采用老办法,在log4j.properties文件中加入如下一句话,打开Spring的日志级别为Info(如果还是看不到有用的调试信息,则把日志级别调整为DEBUG)


log4j.category.org.springframework=INFO, A1, A2


重新启动应用,可以看到后台输出很多以下的信息


INFO - Overriding bean definition for bean 'IScheduleService':xxx


INFO - Overriding bean definition for bean 'IScheduleService':xxx


……


把输入信息拷贝到editplus中,搜索执行了两次的beanId,可以看到该配置文件被“Overriding”了好几次,读下日志出的源代码,大致可以看到该bean已经被加载,后面的xml中又出现了同样Id的bean,确认应用的配置文件中只有一份这样BeanId的xml文件,所以大胆的猜测是不是同样的xmlbean被加载了两次呢?


找到加载xml的入口代码,我们是采用“ClassPathXmlApplicationContext”来加载配置文件的,其中的通配符如下:


publicstatic String[] XMLFILES = new String[] {


"classpath*:trsconfig/**/*beans.xml", "classpath*:**/*beans.xml",


"/trsconfig/domain/com.trs.enable.aop/enabledAopAnnotation.xml"


红色部分的通配符会出现加载同样xml的问题,注视掉前面部分的通配符,重新启动应用,拦截器只会执行一次了。


-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: