Spring架构增强MultiActionController(下)

5.实现MultiMethodControllerUrlHandlerMapping

我们在上面讨论过了怎么实现MultiMethodControllerUrlHandlerMapping,要实现为 具体的代码,我们可以通过扩展 org.springframework.web.servlet.handler.AbstractUrlHandlerMapping。 AbstractUrlHandlerMapping扩展了 org.springframework.web.context.support.WebApplicationObjectSupport。 WebApplicationObjectSupport可以获得当前WebApplicationContext。

1. 重写initApplicationContext方法,在context中查找所有MultiActionController 类型的bean,把MultiActionController的urlMethodmappings属性的key值为key值, MultiActionController实例为键值的键值对添加到一个urlMap中。

public class MultiMethodControllerUrlHandlerMapping extends AbstractUrlHandlerMapping...{  private Map urlMap = new HashMap();  public void initApplicationContext() throws BeansException ...{    initialUrlMap();  }  protected void initialUrlMap()throws BeansException...{    //找查所有MultiMethodController类型和子类型的bean到一个map中,bean Name 为key值 ,bean实例为value值    Map matchingBeans = BeanFacToryUtils.beansOfTypeIncludingAncesTors(        getWebApplicationContext(),        MultiMethodController.class, true, false);    List controllers = null;    if(!matchingBeans.isEmpty())...{      controllers = new ArrayList(matchingBeans.values());      for(int i = 0; controllers != null && i < controllers.size();i++)...{        MultiMethodController controller = (MultiMethodController) controllers.get(i);        Properties urlPros = controller.getUrlMethodmappings();        IteraTor itr = urlPros.keySet().iteraTor();        for(;itr.hasNext();)...{          String url = (String)itr.next();          urlMap.put(url,controller);        }      }    }}

顺境的美德是节制,逆境的美德是坚韧,这后一种是较为伟大的德性。

Spring架构增强MultiActionController(下)

相关文章:

你感兴趣的文章:

标签云: