没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
框架从创建伊始就致力于为复杂问题提供强大的、非侵入性的解决方案。
当中为缩减 配置文件数量引入定制命名空间功能,从此它便
深深植根于核心 框架(、、、、 、 和
命名空间)、 项目(例如 )和非 项
目中(例如 )。
推出了一整套注解,作为基于 的配置的替换方案。注解可用
于 管理对象的自动发现、依赖注入、生命周期方法、 层配置和单
元!集成测试。
探索 中引入的注解技术系列文章由三部分组成,本文是其中的第二
篇,它主要讲述了 层中的注解支持。最后一篇文章将着重介绍可用于集
成和测试的其它特性。
这个系列文章的第一部分论述了 "# 注解()是如何代替 来
配置 管理对象和依赖注入的。我们再用一个例子回顾一下:
$
%
#&'
$()*
+,%
-.'
/
$ 表明 是 层组件,$()* 请求一个
被依赖注入的 实例。这个例子只需要少量的 语句就能使容器识别
两个注解,并限定组件的扫描范围:
012 2
3.4)34!5
这对 层可谓是个福音,因为在这层 的 配置文件已日益臃肿,
甚至可能还不如层下的配置来得有用。控制器掌握着许多属性,例如视 图名称、
表单对象名称和验证器类型,这些多是关乎配置的,甚少关于依赖注入的。通
过 定义继承,或者避免配置变化不是很频繁的属性,也可以有效的管 理
类似的配置。不过以我的经验,很多开发人员都不会这样做,结果就是 文
件总比实际需要的要庞大。不过 $ 和$()* 对 层的配
置会产生积极的作用。
在系列文章的第二部分我们将继续讨论这个问题,并浏览 在
层的注解技术。这些注解被非正式的称为$6,它涉及到了 6 和
6,实际上本文讨论的大部分功能都可以应用在这两个框架
上。
从 Controller 到@Controller
与第一部分讨论的注解相比,$6 已不只是作为配置的一种替换方案这样简
单了,考虑下面这个著名的 6 控制器签名:
%
*(*6)-*78+9#788:
9#7
,-);'
/
所有的 6 控制器要么直接实现 接口,要么就得扩展类似
( 、 、 ( 或
( <* 这样的基类实现。正是 接口 允
许 6 的 =-# 把所有上述对象都看作是“处理器
(-*)”,并在一个名为 9*(* 的适配器
的帮助下调用它们。
$6 从三个重要的方面改变了这个程序设计模型:
> 不需要任何接口或者基类。
允许有任意数量的请求处理方法。
? 在方法签名上具有高度的灵活性。
考虑到以上三个要点,就可以说很公平的说$6 不仅仅是个替换方案了,它
将会是 6 的控制器技术演变过程中下一个重要步骤。
=-# 在名为 (-*9*(* 的适配器
帮助下调用被注解的控制器。正是这个适配器做了大量工作支持我们此后将会
讨论的注解,同时也是它有效的取代了对于控制器基类的需求。
@RequestMapping 简介
我们还是从一个类似于传统的 6 控制器开始:
$
(%
#(77'
$()*
(+(77,
%
-7.7'
/
$78+4!!-)4,
*(*6)-)+9#788:
9#7,-);
%
.
#78@+8:4 4,'
*(*6)#.)
*(*6)+4!;A2BC!#)!!-)4,'
#**D +44:
7&*(+ ,,'
#'
/
/
此处与以往的不同在于,这个控制器并没有扩展 接口,并且它用
$78 注解指明 -)+,是映射到 @7B 路径 “!!-)E
的请求处理方法。除此以外,其余代码都是一个典型的 6 控制器应
有的内容。
在将上述的方法完全转化到$6 后,我们会再回过头来看
$78,但是在此之前还有一点需要提请注意,上面的请求映射
@7B 也可匹配带有任意扩展名的 @7B 路径,例如:
!!-)-
!!-)
!!-)*
灵活的请求处理方法签名
我们曾经承诺过要提供灵活的方法签名,现在来看一下成果。输入的参数中移
除了响应对象,增加了一个代表模型的 ;返回的不再是
*(*6),而是一个字符串,指明呈现响应时要用的视图名字:
剩余11页未读,继续阅读
全栈独立开发者
- 粉丝: 24
- 资源: 35
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页