Spring aop执行两次的原因

今天我需要在切面编程里面获得一个session,然后使用完后就移除掉

结果发现居然有一个空异常。

而我使用的注解也是@After,在业务逻辑运行之后才运行aop

然后我试着打印这个session,发现第一次可以打印出来,居然又打印了一次,因为已经移除了session,所以第二次当然为空了。

错误肯定就发生在了这里,以下是错误代码

2015-09-01 07:06:58,856 [ERROR] [org.apache.struts2.dispatcher.DefaultDispatcherErrorHandler] - Exception occurred during processing request: null
java.lang.NullPointerException
at emb.controller.springandaction.advicebean.adviceLoginRegister.LLog(adviceLoginRegister.java:52)

代码里面我写了一个打印语句

System.out.println("编辑"+iden);  iden是获得session的字符串,这条语句打印了两次,结果如下:

编辑true|error|likilone|127.0.0.1|0

编辑null

编辑后面的null是因为已经移除了session


出现以上aop执行两次的原因是因为applicationContext.xml配置不对

我使用了<aop:aspectj-autoproxy proxy-target-class="true"/>来开启注册aspectj

然后我紧接着我又定义了这个aop所在位置

<bean id="apbean" class="emb.controller.springandaction.advicebean.adviceLoginRegister" />

因而,aop就会执行两次

删掉这个bean就正常了



爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img