设为首页 加入收藏

TOP

Spring拦截器执行了两次
2014-11-24 11:25:13 来源: 作者: 【 】 浏览:0
Tags:Spring 拦截 执行

今天在调试代码的时候,发现有个拦截器被执行了两次,很是奇怪,开始以为是即配置了注解的方式,同时又配置了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的问题,注视掉前面部分的通配符,重新启动应用,拦截器只会执行一次了。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android普通应用程序使用system权.. 下一篇Struts2中的通配符设置

评论

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

·C 内存管理 | 菜鸟教 (2025-12-26 20:20:37)
·如何在 C 语言函数中 (2025-12-26 20:20:34)
·国际音标 [ç] (2025-12-26 20:20:31)
·微服务 Spring Boot (2025-12-26 18:20:10)
·如何调整 Redis 内存 (2025-12-26 18:20:07)