(A17)Tapestry Core :Aliases

本文介绍Tapestry5框架中如何通过注入别名来消除歧义并替换服务。详细解释了如何创建和贡献别名服务及AliasOverrides,使开发者能够更好地理解和使用Tapestry5的依赖注入机制。

本文翻译出处 http://tapestry.apache.org/tapestry5/tapestry-core/guide/appstate.html

本人翻译目的是用来学习Tapestry5的,共享出来希望大家批评指正。计划持续翻译。

chinajavawolf

 

导言
Tapestry 用尽一切手段以便你可以使用 Inject 标注在一个字段域上而无需提供额外数据,但仍然能正确提供对象和服务。
在很多情况里, Tapestry 必需提供一个相配的字段域类型给可用的 IoC 服务。
如果只有一个单独的服务注册为可执行的服务, Tapestry 将利用这个服务。
当有不只一个服务的时候,必须消除歧义确定是哪个服务被注册。为了要消除所有的歧义 ( 所有注入的 ) ,你必须从服务接口创建一个别名指向特殊的服务。
这里采取提供别名服务的形式。
别名服务有另外的意图:首先,他允许基于应用模式现场替换注入服务。当前,只有 ”servlet” 模式,但以后将包括 "portlet" 和可能的 "offline" 模式
其次,共事的 AliasOverrides 服务配置允许现场替换特殊的服务,没有其余注册在 IoC 内的网络服务的烦扰。
贡献的别名
要为别名服务贡献一个新的服务,你必须首先确定一个逻辑名。通常,这是个被服务实现了的服务接口名。
然后你可以向基础服务贡献配置
  1. public static void contributeAlias(@InjectService("MyService") MyService myService,   
  2.      Configuration<aliascontribution></aliascontribution> configuration)   
  3.  {   
  4.      configuration.add(new AliasContribution.create(MyService.class, myService));   
  5.  }   
 
上面的例子是一个典型的模式;服务被公开注入到贡献者( contributor )方法,使用外在的 InjectService 标注。一个贡献( contribution )成为提供的服务类型。
注意 contribution 不能有服务。你仅仅可以在 contribution 方法内实例化一个对象,并且贡献他。
贡献 AliasOverrides
要替换一个服务,你需要知道服务接口的名字。
随后你可以提供一个 contribution AliasOverrides 服务配置,就像前面例子中描述的。
作为代理提供的对象将掩饰默认的contribution
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值