本人翻译目的是用来学习Tapestry5的,共享出来希望大家批评指正。计划持续翻译。
chinajavawolf
对象提供器
当你不提供InjectService标注在一个参数上时(给服务构建器方法或构造器),Tapestry 将自动处理参数。
这被称为对象注入,优于服务注入,因为这个将最终被注入的值不用必须是服务;它可以是某些对象。
如果这听起来含糊,是因为没有一个ObjectProvider,有一个它们完整的设置,形成一个命令链。这个在链中的命令可以基于参数类型提供一个对象,或者基于参数上附加的标注。
有两个内建的对象提供器:
1. 检查Value标注
2. 在注册中检查一个唯一的服务,该服务接口匹配参数类型。通常,@Inject标注通过一个附加的标注触发一个特定的ObjectProvider来提供值作为补充。
@Value 标注提供器
Value标注允许注入一个字面值。当与符号结合时,他们表现一个方法让全部服务网络的部份是点-配置。 举例来说:
- public MyService build(@Value("${max-seconds}") long maxSeconds)
- {
- return new MyServiceImpl(maxSeconds);
- }
这里,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使用提供器的前缀,并且值是对象提供器的实现。
例如:
- public void contributeMasterObjectProvider(OrderedConfiguration<ObjectProvider> configuration)
- {
- configuration.add("MyObject", new MyObjectProvider());
- }
这确定了对象提供器的名字。
当然,这是一个简单的例子。真实的情况是提供器更像是一个使用自身依赖的服务。
分享到:
- 2007-05-27 14:38
- 浏览 2208
- 评论(0)
- 论坛回复 / 浏览 (0 / 2819)
- 查看更多
相关推荐
在Tapestry中,IOC容器负责管理对象的生命周期和依赖关系,包括安全相关的服务。 在Tapestry 5.3.5中,实现用户登录权限通常涉及以下几个关键知识点: 1. **身份验证服务**:这是处理用户身份验证的核心组件。通常...
在"tapestry-ioc-5.0.3-src"这个压缩包中,我们可能找到Tapestry IOC框架的源代码,这对于开发者深入理解其工作原理和定制功能非常有价值。 1. **依赖注入(DI)**:Tapestry IOC的核心概念就是DI,它允许对象在...
1. **Tapestry Core**: 这是Tapestry框架的基础部分,包含了核心组件、服务容器(Tapestry IoC)和页面生命周期管理。通过源码分析,我们可以理解其如何实现页面组件的渲染、事件处理和依赖注入。 2. **Tapestry ...
2. **tapestry-ioc.jar**:Tapestry依赖注入(IoC)容器,用于管理对象的创建、配置和生命周期,使得代码更加松耦合。 3. **tapestry-webresources.jar**:处理静态资源如CSS、JavaScript和图片,支持压缩、合并和...
<tapestry:propertySelection name="country" label="Country" model="${countries}" /> ``` **14. Table组件:** - **用途:**用于创建表格。 - **示例代码:** ```xml <tapestry:table data-model="${users}...
4. **Tapestry IoC (Inversion of Control)**:`tapestry-ioc-5.3.8.jar`实现了依赖注入容器,使得对象的创建和管理变得更加简单,同时也促进了代码的解耦。开发者可以声明服务并定义它们之间的依赖关系,IoC容器会...
这个压缩包包含了多个以"Tapestry"开头的子文件,如 "tapestry-core", "tapestry-hibernate", "tapestry-ioc", "tapestry-upload", 和 "tapestry-spring",这些都是Tapestry框架的不同模块或插件。这些文件的后缀是...
"tapestry学习入门资料" Tapestry 是一个开源的基于 servlet 的应用程序框架,它使用组件对象模型来创建动态的、交互的 web 应用。 Tapestry 使得 Java 代码与 HTML 完全分离,利用这个框架开发大型应用变得...
《Tapestry 5.0:构建Web应用程序》是一份专为深入了解Tapestry 5.0框架而准备的详细指南。Tapestry是Apache软件基金会的一个开源项目,它提供了一种基于Java的声明式MVC(Model-View-Controller)框架,用于构建...
- **tapestry-ioc**:Tapestry 的依赖注入和服务容器模块,是Tapestry的核心组件之一。 - **tapestry-tutorial1**:可能是一个示例教程项目,帮助开发者学习和理解Tapestry的基本用法。 - **tapestry-annotations*...
- **实现方式**: 通过`<tapestry:link>`标签或`<tapestry:component>`中的`href`属性来实现页面间的跳转。 - **应用场景**: 用户操作后导航到新的页面。 **1.3 初始化** - **初始化方法**: `init()`方法是在组件...
6. **Spring集成**:通过tapestry-spring模块,Tapestry可以与Spring框架协同工作,利用Spring的IoC容器管理服务和bean。 7. **测试支持**:Tapestry-test模块提供了专门的测试工具,使得开发者能够对组件进行单元...
4. **tapestry-ioc-LICENSE.txt**:这部分涉及Tapestry的依赖注入(IOC)框架,它是Tapestry实现组件之间解耦的关键部分。 5. **tapestry-upload-LICENSE.txt**:关于Tapestry中文件上传功能的许可信息,帮助开发者...
《Tapestry 5:构建Web应用程序》是关于Tapestry 5框架的一本权威指南。Tapestry 5是一个强大的Java Web应用框架,由Apache软件基金会开发并维护,它致力于提供一种更高效、更优雅的方式来构建动态、交互式的Web应用...
### Tapestry5:构建Web应用程序 #### 一、Tapestry5概述 Tapestry5是一种先进的、基于Java的Web开发框架,它以其强大的功能、灵活性以及易用性著称。该框架由Howard Lewis Ship创建,并由Apache软件基金会维护。...
然而,随着时间的推移,Tapestry4展现出的独特优势逐渐显现,尤其是其通过Hivemind提供的IoC和DI(Dependency Injection)机制,使得开发者能够根据具体需求重构Tapestry4的组件,从而实现更为个性化、符合特定场景的...
Hibernate是一个对象关系映射(Object Relational Mapping, ORM)工具,它将Java对象映射到关系型数据库表中,极大地减少了开发过程中手动编写SQL语句和处理JDBC连接的工作量。通过Hibernate,开发者可以专注于业务...
Tapestry是一个分布式系统基础设施,专门设计用于实现容错性的广域定位和路由。这个系统由Ben Y. Zhao、John Kubiatowicz和Anthony D. Joseph等人在加州大学伯克利分校的计算机科学部开发,旨在应对无处不在计算的...
Tapestry是一款强大的Java Web应用程序框架,由Apache软件基金会维护,它强调了组件化、模块化和可重用性,使得开发复杂的Web应用变得更加简单。本文将深入介绍Tapestry 4的相关知识点。 1. **组件化编程**: ...