`
chinajavawolf
  • 浏览: 117043 次
  • 性别: 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用户登陆权限

    在Tapestry中,IOC容器负责管理对象的生命周期和依赖关系,包括安全相关的服务。 在Tapestry 5.3.5中,实现用户登录权限通常涉及以下几个关键知识点: 1. **身份验证服务**:这是处理用户身份验证的核心组件。通常...

    tapestry-ioc-5.0.3-src

    在"tapestry-ioc-5.0.3-src"这个压缩包中,我们可能找到Tapestry IOC框架的源代码,这对于开发者深入理解其工作原理和定制功能非常有价值。 1. **依赖注入(DI)**:Tapestry IOC的核心概念就是DI,它允许对象在...

    Tapestry.5.Building.Web.Applications.pdf

    ### Tapestry 5:构建 Web 应用程序 #### 一、Tapestry 5 概述 Tapestry 5 是一个强大的 Java Web 开发框架,它为开发者提供了高效且简洁的方式去创建复杂的 Web 应用程序。本书《Tapestry 5:构建 Web 应用程序》...

    tapestry源码 api等

    1. **Tapestry Core**: 这是Tapestry框架的基础部分,包含了核心组件、服务容器(Tapestry IoC)和页面生命周期管理。通过源码分析,我们可以理解其如何实现页面组件的渲染、事件处理和依赖注入。 2. **Tapestry ...

    Tapestry 5.4.1 相关jar文件

    2. **tapestry-ioc.jar**:Tapestry依赖注入(IoC)容器,用于管理对象的创建、配置和生命周期,使得代码更加松耦合。 3. **tapestry-webresources.jar**:处理静态资源如CSS、JavaScript和图片,支持压缩、合并和...

    Tapestry开发

    &lt;tapestry:propertySelection name="country" label="Country" model="${countries}" /&gt; ``` **14. Table组件:** - **用途:**用于创建表格。 - **示例代码:** ```xml &lt;tapestry:table data-model="${users}...

    apache-tapestry-5.3.8-bin.zip

    4. **Tapestry IoC (Inversion of Control)**:`tapestry-ioc-5.3.8.jar`实现了依赖注入容器,使得对象的创建和管理变得更加简单,同时也促进了代码的解耦。开发者可以声明服务并定义它们之间的依赖关系,IoC容器会...

    优化大使tapestry-bin-5.0.18.zip

    这个压缩包包含了多个以"Tapestry"开头的子文件,如 "tapestry-core", "tapestry-hibernate", "tapestry-ioc", "tapestry-upload", 和 "tapestry-spring",这些都是Tapestry框架的不同模块或插件。这些文件的后缀是...

    tapestry学习入门资料

    "tapestry学习入门资料" Tapestry 是一个开源的基于 servlet 的应用程序框架,它使用组件对象模型来创建动态的、交互的 web 应用。 Tapestry 使得 Java 代码与 HTML 完全分离,利用这个框架开发大型应用变得...

    Tapestry5.0.7

    - **tapestry-ioc**:Tapestry 的依赖注入和服务容器模块,是Tapestry的核心组件之一。 - **tapestry-tutorial1**:可能是一个示例教程项目,帮助开发者学习和理解Tapestry的基本用法。 - **tapestry-annotations*...

    Tapestry字典0.1.pdf

    - **实现方式**: 通过`&lt;tapestry:link&gt;`标签或`&lt;tapestry:component&gt;`中的`href`属性来实现页面间的跳转。 - **应用场景**: 用户操作后导航到新的页面。 **1.3 初始化** - **初始化方法**: `init()`方法是在组件...

    tapestry5.2.6 jar包

    6. **Spring集成**:通过tapestry-spring模块,Tapestry可以与Spring框架协同工作,利用Spring的IoC容器管理服务和bean。 7. **测试支持**:Tapestry-test模块提供了专门的测试工具,使得开发者能够对组件进行单元...

    tapestry-bin-5.1.0.5

    4. **tapestry-ioc-LICENSE.txt**:这部分涉及Tapestry的依赖注入(IOC)框架,它是Tapestry实现组件之间解耦的关键部分。 5. **tapestry-upload-LICENSE.txt**:关于Tapestry中文件上传功能的许可信息,帮助开发者...

    tapestry5 build web application-alexander

    《Tapestry 5:构建Web应用程序》是关于Tapestry 5框架的一本权威指南。Tapestry 5是一个强大的Java Web应用框架,由Apache软件基金会开发并维护,它致力于提供一种更高效、更优雅的方式来构建动态、交互式的Web应用...

    Tapestry5, Packt.Publishing.Tapestry.5.Building.Web.Applications.Jan.2008.RETAiL.eBOOk-sUppLeX.pdf

    ### Tapestry5:构建Web应用程序 #### 一、Tapestry5概述 Tapestry5是一种先进的、基于Java的Web开发框架,它以其强大的功能、灵活性以及易用性著称。该框架由Howard Lewis Ship创建,并由Apache软件基金会维护。...

    Tapestry4开发指南

    然而,随着时间的推移,Tapestry4展现出的独特优势逐渐显现,尤其是其通过Hivemind提供的IoC和DI(Dependency Injection)机制,使得开发者能够根据具体需求重构Tapestry4的组件,从而实现更为个性化、符合特定场景的...

    基于Tapestry+Spring+Hibernate框架的Web应用

    Hibernate是一个对象关系映射(Object Relational Mapping, ORM)工具,它将Java对象映射到关系型数据库表中,极大地减少了开发过程中手动编写SQL语句和处理JDBC连接的工作量。通过Hibernate,开发者可以专注于业务...

    Tapestry+5.1+实例教程

    4. **下载Tapestry:** - 从Tapestry官方网站下载tapestry-bin-5.1.0.5.zip,并保存以备后续使用。 5. **新建Web项目:** - 在Eclipse中启动一个新的Web项目,并按照指示进行配置。 - 创建项目时选择合适的Web...

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

    Tapestry是一个分布式系统基础设施,专门设计用于实现容错性的广域定位和路由。这个系统由Ben Y. Zhao、John Kubiatowicz和Anthony D. Joseph等人在加州大学伯克利分校的计算机科学部开发,旨在应对无处不在计算的...

Global site tag (gtag.js) - Google Analytics