拦截器

来源:互联网 发布:excel数据列转行 编辑:程序博客网 时间:2024/05/02 05:38

     简单的说,拦截器就是一个EJB对象。唯一的不同就是他有一个独特的功能:能捕获到特定方法的执行,并且在这些方法执行前或者执行后执行特定的代码。这个概念本身非常的简单。因为这种情形在我们的生活中非常的常见。比如在机场或是是电影院,总是会有检票员在监视每一个想要登机或者进去看电影的人,并且在登机或进电影院之前检查他们的票。这个检票员除了胸前的工作牌之外,和其他的人员并没有什么区别。同样,我们想让一个POJO成为拦截器,除了要在这个对象的方法前贴上@AroundInvoke注解外,什么也不用做。就像这样:

     public class AcctionBazaarLogger {  
             @AroundInvoke
              public Object logMethodEntry(InvocationContext invocationContext)throws Exception{
              System.out.println("Entering method"+invocationContext.getMethod().getName());
              return invocationContext.proceed();
          }
      }

     不用怀疑,真的就这么简单。下面我们改让他来工作了。我们让他来监视一个叫testInte()的方法,就监视一个方法就好了。就像所有警察故事里面一样,只要犯罪嫌疑人一有行动就抓他。既然他是我们的目标,当然要对他做一个标志,也仅仅是要做一个标志而已。就想这样:

    @Interceptors(AcctionBazaarLogger.class)
        public void testInte() {
       
        }

     以后每次这个方法被执行时都会让我们的拦截器知道,并且在他之前执行我们的拦截器方法。是不是跟我们在初学JAVA的讲的事件驱动很像。