欢迎来到天天文库
浏览记录
ID:6352695
大小:28.88 KB
页数:11页
时间:2018-01-11
《spring mvc 简明教程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Spring框架从创建伊始就致力于为复杂问题提供强大的、非侵入性的解决方案。Spring2.0当中为缩减XML配置文件数量引入定制命名空间功能,从此它便深深植根于核心Spring框架(aop、context、jee、jms、lang、tx和util命名空间)、SpringPortfolio项目(例如SpringSecurity)和非Spring项目中(例如CXF)。Spring2.5推出了一整套注解,作为基于XML的配置的替换方案。注解可用于Spring管理对象的自动发现、依赖注入、生命周期方法、Web层配置和单元/集成测试。探索Spring2.5中引入的注解技术系列文章由三部分组成,本文是
2、其中的第二篇,它主要讲述了Web层中的注解支持。最后一篇文章将着重介绍可用于集成和测试的其它特性。这个系列文章的第一部分论述了Java注解(annotation)是如何代替XML来配置Spring管理对象和依赖注入的。我们再用一个例子回顾一下:@ControllerpublicclassClinicController{privatefinalClinicclinic;@AutowiredpublicClinicController(Clinicclinic){this.clinic=clinic;}...@Controller表明ClinicController是Web层组件,@Autow
3、ired请求一个被依赖注入的Clinic实例。这个例子只需要少量的XML语句就能使容器识别两个注解,并限定组件的扫描范围:这对Web层可谓是个福音,因为在这层Spring的XML配置文件已日益臃肿,甚至可能还不如层下的配置来得有用。控制器掌握着许多属性,例如视图名称、表单对象名称和验证器类型,这些多是关乎配置的,甚少关于依赖注入的。通过bean定义继承,或者避免配置变化不是很频繁的属性,也可以有效的管理类似的配置。不过以我的经验,很多开发人
4、员都不会这样做,结果就是XML文件总比实际需要的要庞大。不过@Controller和@Autowired对Web层的配置会产生积极的作用。在系列文章的第二部分我们将继续讨论这个问题,并浏览Spring2.5在Web层的注解技术。这些注解被非正式的称为@MVC,它涉及到了SpringMVC和SpringPorletMVC,实际上本文讨论的大部分功能都可以应用在这两个框架上。从Controller到@Controller与第一部分讨论的注解相比,@MVC已不只是作为配置的一种替换方案这样简单了,考虑下面这个著名的SpringMVC控制器签名:publicinterfaceController{M
5、odelAndViewhandleRequest(HttpServletRequestrequest,HttpServletResponseresponse)throwsException;}所有的SpringMVC控制器要么直接实现Controller接口,要么就得扩展类似AbstractController、SimpleFormController、MultiActionController或AbstractWizardFormController这样的基类实现。正是Controller接口允许SpringMVC的DispatcherServlet把所有上述对象都看作是“处理器(hand
6、lers)”,并在一个名为SimpleControllerHandlerAdapter的适配器的帮助下调用它们。@MVC从三个重要的方面改变了这个程序设计模型:1.不需要任何接口或者基类。2.允许有任意数量的请求处理方法。3.在方法签名上具有高度的灵活性。考虑到以上三个要点,就可以说很公平的说@MVC不仅仅是个替换方案了,它将会是SpringMVC的控制器技术演变过程中下一个重要步骤。DispatcherServlet在名为AnnotationMethodHandlerAdapter的适配器帮助下调用被注解的控制器。正是这个适配器做了大量工作支持我们此后将会讨论的注解,同时也是它有效的取代了
7、对于控制器基类的需求。@RequestMapping简介我们还是从一个类似于传统的SpringMVCController控制器开始:@ControllerpublicclassAccountsController{privateAccountRepositoryaccountRepository;@AutowiredpublicAccountsController(AccountRepositoryaccou
此文档下载收益归作者所有