控制器中非Action方法的AOP拦截

33号小人物 发布于 2016/04/08 13:20
阅读 242
收藏 0

@JFinal 你好,想跟你请教个问题:

如何针对MsgController中非action的方法进行AOP拦截,例如所有的processInXXXMSG方法。

我看到手册里面说,Enhancer 支持对类的增强,可是我在Config中调用Enhancer.enhance(WeixinMsgController.class),发现拦截器并不能起作用 。

请问对类的增强是如何实现的呢?

加载中
0
JFinal
JFinal

    控制层拦截器只能拦截器 action,所以要求 Controller 中的方法首先是一个 action,action 即为Controller 之中的 public 无参方法。

  而processInXXXMSG这类方法仅仅是 index() 分发各类请求时回调的方法,并不是真正的 action,所以也就不能使用控制层的拦截器。

   最简单的解决办法是创建相应的Service类,然后在Service 上使用业务层 AOP。最后,建议详细看一下手册,Enhancer.enhance(...) 只需用在业务层,而控制层 AOP 是自动触发的,无需enhance,这个在手册的 4.5章节中有详细的说明,在此下载:http://www.jfinal.com

33号小人物
33号小人物
嗯嗯,我之前也使用过业务层的AOP,效果很好。就是对控制层中,非Action的AOP不知道怎么处理。我试试将processInMsg方法部分都抽离成业务层吧。
返回顶部
顶部