java中callback使用

         以前每次看到程序中有回调的字眼,头都是很晕(不理解)。

    看了一个testCase的例子:
// 实现FilterChain new了 一个 特殊的实例  并且覆盖doFilter 方法
这里我感觉还是相当巧妙的,我不用显式定义 继承FilterChain这个抽象类。

 
 
  1.    final FilterChain filterChain = new FilterChain() {  
  2.   
  3.     public void doFilter(final ServletRequest arg0,  
  4.   
  5.             final ServletResponse arg1) throws IOException,  
  6.   
  7.             ServletException {  
  8.   
  9.         System.out.print("run filter");  
  10.   
  11.     }  
  12.   
  13. };  
  14.   
  15. try {  
  16.   
  17.     System.out.print("start filter");  
  18.   
  19.   
  20.   
  21.     this.filter.doFilter(request, response, filterChain);  
  22.   
  23.     assertNull(response.getRedirectedUrl());  
  24.   
  25. catch (IOException e) {  
  26.   
  27.     // TODO Auto-generated catch block  
  28.   
  29.     e.printStackTrace();  
  30.   
  31. catch (ServletException e) {  
  32.   
  33.     // TODO Auto-generated catch block  
  34.   
  35.     e.printStackTrace();  
  36.   
  37. }  



第2个例子:
 
  1. public int executeUpdate(final String hql, final Map pMap) {  
  2.         int result = 0;  
  3.         Object o = getHibernateTemplate().execute(new HibernateCallback() {  
  4.             public Object doInHibernate(final Session session)  
  5.                     throws HibernateException {  
  6.                 int result = 0;  
  7.                 Query queryObject = session.createQuery(hql);  
  8.                 String[] params = queryObject.getNamedParameters();  
  9.                 for (int i = 0, max = params.length; i < max; i++) {  
  10.                     queryObject.setParameter(params[i], pMap.get(params[i]));  
  11.                 }  
  12.                 result = queryObject.executeUpdate();  
  13.                 return result;  
  14.   
  15.             }  
  16.         });  
  17.         Integer i = (Integer) o;  
  18.         result = i.intValue();  
  19.         return result;  
  20.     }  



HibernateTemplate 巧妙使用了 HibernateCallback使得dao 的代码非常优雅!

你可能感兴趣的:(java,DAO)