论坛首页 Java企业应用论坛

(A17)Tapestry Core :Aliases

浏览 2247 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-05-15  

本文翻译出处 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
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics