今天我需要在切面编程里面获得一个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/天,具体规则查看活动详情