最近做的一个项目中用到了Spring AOP,在做单元测试时都没发现有任何异样,但是当运行在服务器上后,突然有一次查看日志时发现所有的AOP方法重复执行了4次,简单的找了一下原因,没找到。由于AOP方法只是做参数校验和简单的权限控制,所以在开发期间,重复执行是可以接受的,所以就没管了,直到今天第二次认真的来解决这个问题。之前也在网上查了不少资料,但是都没有发现有这样的问题,难道这不应该是个问题。。。没办法,只好自己慢慢排查了,断点跟踪发现,Spirng加载进去的AOP方法确实是重复了4次,突然想到aop:config配置所在的文件在另外3个文件中进行了import引用,这样算下来刚好是4,如果推测不错的话,那么就是由于import导致aop:config重复加载导致的这个原因,果断把aop:config放到不被引用的文件中,再次运行,发现问题解决了。。。
下午查了一下Spring的官方文档,发现并没有说名import究竟如何工作,只是简单的说明这样可以各逻辑层的bean配置在不同的文件中,方便管理,倒是说了可以有多个aop:config,那么这么看来import会导致同一个aop:config被当做不容的aop:config进行加载,自然也就存在重复了,所以以后在项目中为了避免在不知情的情况下引用其他存在aop:config的配置文件,尽量的aop:config单独配置比较好。