Processor、AbstractProcessor,什么情况下扩展AbstractProcssor呢?麻烦了:)
3 回复
一般来说, 实现Processor都会继承AbstractProcessor
所以呢, 单单说AbstractProcessor的未实现方法
void process(ActionContext ac) throws Throwable;
然后,来看看默认的配置是咋样的
{
"default" : {
"ps" : [
"org.nutz.mvc.impl.processor.UpdateRequestAttributesProcessor",
"org.nutz.mvc.impl.processor.EncodingProcessor",
"org.nutz.mvc.impl.processor.ModuleProcessor",
"!org.nutz.integration.shiro.NutShiroProcessor",
"org.nutz.mvc.impl.processor.ActionFiltersProcessor",
"org.nutz.mvc.impl.processor.AdaptorProcessor",
"!org.nutz.plugins.validation.ValidationProcessor",
"org.nutz.mvc.impl.processor.MethodInvokeProcessor",
"org.nutz.mvc.impl.processor.ViewProcessor"
],
"error" : 'org.nutz.mvc.impl.processor.FailProcessor'
}
}
可以看到, 基本上一个Processor只做自己的事, 然后一路传递下去, 跟aop或struts2的过滤链一样
所以, 例如需要shiro进行鉴权,鉴权只需要知道入口方法,偶尔需要知道是哪个对象,所以NutShiroProcessor在ModuleProcessor之后就行
再例如, 如果要检查方法参数是否合法,那么就需要在AdaptorProcessor之后插入自定义的Processor
说了那么多,其实就一句, 就是你希望在入口方法执行前后(注意是前后,不是前哦)插入自己的通用逻辑的话, 需要自定义Processor了
@wendal Processord 的本质是 aop还是过滤器或者?
添加回复
请先登陆