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

(C14)Tapestry IoC:Service Builders Building Pipelines

阅读更多
本人翻译目的是用来学习Tapestry5的,共享出来希望大家批评指正。计划持续翻译。
chinajavawolf  
构建管道
 
Tapestry内的一个共通的模式是过滤管道。在这个模式下,一个存在的服务是一个使用过滤的装饰器。这个过滤器将委派给这个服务,但在调用这个方法之前有机会去改变或替换参数,并且可以在返回前执行操作。这与命令链相似,但不同的是有两个接口(服务接口和过滤器接口) ,通过服务接口每个滤波器调用下一个过滤器。在命令链中,这个链调用每一个方法,每个必须在链中的下一个命令被调用之前返回。
 
服务接口和过滤器接口关系密切:过滤器接口必须匹配服务接口,但过滤器接口的每个方法必须有一个附加的参数,类型是服务接口。例如,一个管道执行字符串转换可以使用下面的接口:
  1. public interface StringTransformService   
  2. {   
  3.  String transform(String input);   
  4. }   
 
  1. public interface StringTransformFilter   
  2. {   
  3.  String transform(String input, StringTransformService delegate);   
  4. }  
一个过滤器的实现看上去是这样的:
  1. public class UpcasePreFilter implements StringTransformFilter   
  2. {   
  3.  public String transform(String input, StringTransformService delegate)   
  4.  {   
  5.     return delegate.transform(input.toUpperCase());   
  6.  }   
  7. }  
代替的是,过滤器可以传递input给未改变的委派,但在结果上调用toUpperCase()
  1. public class UpcasePostFilter implements StringTransformFilter   
  2. {   
  3.  public String transform(String input, StringTransformService delegate)   
  4.  {   
  5.     return delegate.transform(input).toUpperCase();   
  6.  }   
  7. }   
  8.    
PipelineBuilder服务对构造管道有用。这个服务经常注入在一个服务构建器方法内,与有序的服务配置一起。
 
这个构建器完成的是表现每个在管道中的过滤器作为这个服务接口的一个实例。
 
 
这个bridgePipelineBuilder服务创建。这个terminator必须被提供。bridgeterminator实现了这个服务接口。 
 
  1. public static StringTransformService build(   
  2.     @InjectService("PipelineBuilder")   
  3.     PipelineBuilder builder,   
  4.     List<StringTransformFilter> configuration,   
  5.     Log serviceLog)   
  6.     {   
  7.          
  8.       StringTransformService terminator = new StringTransformService()   
  9.       {   
  10.         public String transform(String input)   
  11.         {   
  12.           return input;   
  13.         }   
  14.       };   
  15.          
  16.       return builder.build(log,   
  17.         StringTransformService.class, StringTransformFilter.class,   
  18.         configuration,   
  19.         terminator);   
  20. }      
 
这里我们创建terminator给管道作为一个内建类的实例,并且提供给构建器。这个结果是一个新的服务压缩成整个管道。当没有过滤器时,这就是terminator
分享到:
评论

相关推荐

    Tapestry.5.Building.Web.Applications.pdf

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

    tapestry5.3.5 IOC用户登陆权限

    在IT行业中, Tapestry 是一个基于Java的开源Web应用程序框架,它强调组件化、类型安全和高度可测试性。Tapestry 5.3.5是该框架的一个版本,提供了许多增强的功能和改进。在这个场景中,我们关注的是"IOC用户登陆...

    tapestry-ioc-5.0.3-src

    4. **注解驱动**:Tapestry IOC支持使用Java注解进行配置,如`@Inject`用于注入依赖,`@Service`用于定义服务,`@Component`用于组件定义等。这使得代码更清晰,减少了XML配置文件的需求。 5. **模块系统**:...

    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和图片,支持压缩、合并和...

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

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

    Tapestry开发

    ### Tapestry开发知识点详解 #### 一、Tapestry简介及其背景 Tapestry是一种用于构建高度可伸缩且易于维护的Web应用程序的Java框架。它最初由Howard Lewis Ship开发,并于2000年发布。Tapestry的设计理念是为了...

    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 完全分离,利用这个框架开发大型应用变得...

    Packt.Publishing.Tapestry.5.Building.Web.Applications.Jan.2008.pdf

    本书《Packt Publishing Tapestry 5 Building Web Applications Jan 2008》由Alexander Kolesnikov撰写,为读者提供了一个逐步指南,帮助他们掌握使用Apache Tapestry框架进行Java Web开发的技术要点。 #### 二、...

    Tapestry 5 Building Web Applications.pdf

    ### Tapestry 5 构建 Web 应用程序 #### 一、Tapestry 5 概览 Tapestry 5 是一个基于 Java 的开源 Web 开发框架,旨在简化 Web 应用程序的开发过程。它通过提供一系列高级抽象和组件化方法,帮助开发者更加高效地...

    Tapestry5.0.7

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

    Tapestry字典0.1.pdf

    ### Tapestry字典知识点概述 #### 一、基础知识 (Using Forms) **1.1 page文件和class文件联系** - **概念**: 在Tapestry中,`page`文件指的是页面定义文件,通常为HTML模板;而`class`文件则是Java类文件,用于...

    tapestry-bin-5.1.0.5

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

    tapestry5.2.6 jar包

    Tapestry 5.2.6 是一个成熟的Java Web开发框架,它提供了一种高效、模块化和可扩展的方式来构建动态、数据驱动的Web应用程序。这个框架的核心理念是将用户界面与业务逻辑分离,通过组件化的思想实现页面的构建,从而...

    Tapestry4开发指南

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

    tapestry官方中文文档

    Tapestry是一款强大的Java Web应用程序框架,由Apache软件基金会维护,它强调了组件化、模块化和可重用性,使得开发复杂的Web应用变得更加简单。本文将深入介绍Tapestry 4的相关知识点。 1. **组件化编程**: ...

    Tapestry+5.1+实例教程

    ### Tapestry 5.1 实例教程核心知识点详解 #### 一、Tapestry简介及特点 Tapestry是一款基于组件的Web开发框架,它利用Servlet技术构建了一种全新的面向组件的开发模型。该框架的核心理念是将Web应用程序分解为一...

Global site tag (gtag.js) - Google Analytics