`
chinajavawolf
  • 浏览: 114964 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
社区版块
存档分类
最新评论

(C10)Tapestry IoC:Object Providers

阅读更多
本人翻译目的是用来学习Tapestry5的,共享出来希望大家批评指正。计划持续翻译。
chinajavawolf  
对象提供器
 
当你不提供InjectService标注在一个参数上时(给服务构建器方法或构造器),Tapestry 将自动处理参数。
 
这被称为对象注入,优于服务注入,因为这个将最终被注入的值不用必须是服务;它可以是某些对象。
 
如果这听起来含糊,是因为没有一个ObjectProvider,有一个它们完整的设置,形成一个命令链。这个在链中的命令可以基于参数类型提供一个对象,或者基于参数上附加的标注。
 
有两个内建的对象提供器:
1.          检查Value标注
2.          在注册中检查一个唯一的服务,该服务接口匹配参数类型。通常,@Inject标注通过一个附加的标注触发一个特定的ObjectProvider来提供值作为补充。
@Value 标注提供器
Value标注允许注入一个字面值。当与符号结合时,他们表现一个方法让全部服务网络的部份是点-配置。 举例来说:
 
  1. public MyService build(@Value("${max-seconds}"long maxSeconds)   
  2.  {   
  3.     return new MyServiceImpl(maxSeconds);   
  4.  }   
 
这里,MyService服务需要一个许多秒的配置。这个值作为符号被提供,使用的工厂默认可以用应用默认重写。
 
服务提供器
 
这通常是最后选择的对象提供器。
 
一个唯一选中的服务必须存在他的接口要匹配参数类型。这并不是一个严格的匹配:查找任何或全部服务接口是参数类型的一个超类的服务。
 
如果没有匹配或有多个匹配将抛出一个异常。
别名对象提供器
 
tapestry-core模块定义别名对象提供器,被用来做一替代服务或取消服务歧义的方法(当多个服务实现同一个接口时)。
 
定义新的提供器
 
New providers can be specified by contributing to the MasterObjectProvider service's configuration. The configuration is mapped, with the keys being the provider prefix, and the values being the object provider implementation.新的提供器可以通过贡献给MasterObjectProvider服务的配置指定。这个配置是映像,key使用提供器的前缀,并且值是对象提供器的实现。
 
例如:
 
  1. public void contributeMasterObjectProvider(OrderedConfiguration<ObjectProvider> configuration)   
  2. {   
  3.    configuration.add("MyObject"new MyObjectProvider());   
  4. }  
 
这确定了对象提供器的名字。
 
当然,这是一个简单的例子。真实的情况是提供器更像是一个使用自身依赖的服务。
分享到:
评论

相关推荐

    tapestry5.3.5 IOC用户登陆权限

    tapestry5.3.5 IOC用户登陆权限原码

    tapestry-ioc-5.0.3-src

    一个web框架的IOC实现,Apache tapestry-ioc

    关于Tapestry的一些个人总结

    Tapestry简述: Tapestry是一个servle的扩展,它运行于servlet容器(Tomcat)或包含servlet容器的服务器(如Jboss) 通过使用Tapestry,开发者完全不需要使用JSP技术,用户只需要使用Tapestry提供的模板技术即可, ...

    深入浅出Tapestry

    资源名称:深入浅出Tapestry内容简介:本书以循序渐进的方式,从Tapestry框架技术的基本概念入手,讲解Tapestry框架在J2EE Web应用程序中的整体架构实现。使读者在学习如何使用Tapestry框架技术的同时,还能够获得在...

    Tapestry 5.4.1 相关jar文件

    Tapestry 5.4.1 相关jar文件

    tapestry-cometd:基于 CometD 的 Tapestry5 推送库

    基于库 特征: 无需编写一行 Javascript 即可创建推送应用程序 完全可配置 使用设置传入消息的... xmlns : p = " tapestry:parameter " &gt; &lt;!-- type a chat message in this form --&gt; &lt; form t :

    tapestry-5:Apache Tapestry 5的镜像

    Tapestry是一个面向组件的Java Web应用程序框架,专注于性能和开发人员的生产力。 组件只是页面的可重用部分。 创建自己的组件非常容易,Tapestry附带了许多可以使用的组件(窗体,循环,选择,复选框,网格,...

    (Tapestry)An infrastructure for Fault-Tolerant Wide-area Location and Routing.ppt

    (Tapestry)An infrastructure for Fault-Tolerant Wide-area Location and Routing.

    tapestry-react:Apache Tapestry和React的集成

    将React( )与Tapestry( )一起使用。 该库提供了将Tapestry与JSX模板结合使用的基本集成。 用法 build.gradle : repositories { jcenter() } dependencies { runtime ' de.eddyson:tapestry-react:0.33.0 '...

    tapestry教程资料文档合集

    Tapestry5最新中文教程.doc 作者 Renat Zubairov & Igor Drobiazko译者 沙晓兰 发布于 2008年7月2日 下午9时30分 社区 Java 主题 Web框架 ----------------------------------------- Tapestry5.1实例教程.pdf ...

    tapestry5以上的帮助事例,帮助文档与spring衔接文档

    Tapestry是一个基于控件的框架以致于用它开发Web应用类似开发传统的GUI应用。你用Tapestry开发Web应用时你无需关注以操作为中心的(Operation-centric) Servlet API.引用Tapestry网站上的一句话:"Tapestry用对象...

    tapestry官方中文文档

    Tapestry 4 官方文档中文版本,现在中文资料比较少,和大家共享一下

    tapestry:验证和编辑小型真核基因组装配体

    挂毯Tapestry是一种使用长序列阅读来验证和编辑小型真核基因组装配体的工具。 它旨在帮助识别接近完整的基因组装配体中的完整染色体,共生体,单倍型,复杂特征和错误。 在上有预印本。 它已被用来验证染色体。 ...

    tapestry-src-5.1.0.5.zip

    包含: tapestry 的源代码, tapestry集成spring2.0 tapestry快速启动 tapestry upload tapestry hibernate tapestry annotations

    Tapestry5.0.16_API文档

    Tapestry5.0.16文档和大家一起学习

    Maven + Tapestry5.3.8 + Spring4.0.5 + Oracle10g

    这是Tapestry5.3.8 版本的一个大Demo,集合Spring4.0, 采用Maven 项目管理工具,没有集合Hibernate。 之所以说是个大Demo,是因为这项目中包含的内容并不少,包含: 1)解决了Tapestry5.3.8中文Bug问题 2)Tapestry...

    tapestry 实例

    tapestry 实例tapestry 实例tapestry 实例tapestry 实例

    tapestry3开发指南,带tapestry3所有jar包

    tapestry3开发指南,带tapestry3所有jar包

    深入浅出tapestry

    本书以循序渐进的方式,从Tapestry框架技术的基本概念入手,讲解Tapestry框架在J2EE Web应用程序中的整体架构实现。使读者在学习如何使用Tapestry框架技术的同时,还能够获得在J2EE Web应用程序中应用Tapestry框架的...

    Tapestry4开发指南

    Tapestry4的雏形是Tapestry3.1,Tapestry的作者Howard,不光开发了Tapestry,还同时开发了一个轻量级框架Hivemind。所以Tapestry3.1的开发一开始就处于Hivemind框架之下。后来由于种种原因,Howard没有将Tapestry3.1...

Global site tag (gtag.js) - Google Analytics