Groovy使Spring更出色,第1部分: 集成的基础知识 - 编程入门网
roovy 类
配置已经编译成 .class 文件的 Groovy bean,这与配置基于 Java 的 bean 完全一样。假设您已经 使用 groovyc 编译器编译了 GroovyPdfGenerator,那么可以使用常规的 Spring XML 配置定义 bean, 如清单 3 所示: 清单 3. 使用 XML 配置预编译的 GroovyPdfGenerator <bean id="pdfGenerator" class="groovierspring.GroovyPdfGenerator"> <property name="companyName" value="Groovy Bookstore"/> </bean> 清单 3 中的配置是一个简单的旧的 Spring bean 定义。它是用 Groovy 实现 的,但这一点不重要。 在包含 pdfGenerator bean 的 Spring 应用程序中,任何其他组件都可以使用它 ,而不必知道或关心它 的实现细节或语言。还可以像往常一样使用 <property> 元素在 bean 上 设置属性。(Spring 2.0 引入了 p 名称空间,以便更简练地定义属性,但是我坚持使用 <property> 元素,因为我发 现它们可读性更好 — 这完全是个人的喜好)。 另外,如果使用 Spring 2.5 或更高版本,还可以使用基于注释的 GroovyPdfGenerator 的配置。在 此情况下,不必在 XML 应用程序上下文中实际定义 bean;相反,可以用 @Component 构造型注释来注 释类,如清单 4 所示: 清单 4. 用 @Component 注释 GroovyPdfGenerator @Component("pdfGenerator") class GroovyPdfGenerator implements PdfGenerator { ... } 然后,在 Spring 应用程序上下文 XML 配置中启用注释配置和组件扫描,如 清单 5 所示: 清单 5. 启用 Spring 注释配置和组件扫描 <context:annotation-config/> <context:component-scan base-package="groovierspring"/> 不管使用 XML 还是注释来配置编译后的 Groovy bean,这种配置与普通的基 于 Java bean 的配置是 一样的。 Groovy使Spring更出色,第1部分: 集成的基础知识(4)时间:2011-08-27 IBM Scott Leberknight配置来自 Groovy 脚本的 bean 配置来自 .groovy 脚本的 Groovy bean 与配置编译后的 Groovy bean 大不 相同。在这里,事情开 始变得更加有趣。将 Groovy 脚本转换为 bean 的机制包括读取并编译 Groovy 脚本,然后使之可以在 Spring 应用程序上下文中作为 bean 使用。第一步是定义一个 bean,它的类型 可以认为是 GroovyScriptFactory,并且指向 Groovy 脚本的位置,如清单 6 所示: 清单 6. 定义 GroovyScriptFactory bean <bean id="pdfGenerator" class="org.springframework.scripting.groovy.GroovyScriptFactory"> <constructor-arg value="classpath:groovierspring/GroovyPdfGenerator.groovy"/> <property name="companyName" value="Groovier Bookstore"/> </bean> 在这个清单中,pdfGenerator bean 被定义为 GroovyScriptFactory。 <constructor-arg> 元 素定义要配置的 Groovy 脚本的位置。特别要注意,这指向一个 Groovy 脚本, 而不是一个已编译的 Groovy 类。可以使用定义 Spring bean 的语法设置用脚本编写的对象的属性。 正如您预期的那样,清 单 6 中的 <property> 元素设置 companyName 属性。 GroovyPdfGenerator.groovy 脚本 必须包含至少一个实现接口的类。通常, 最好的做法是遵从标准 Java 实现,每个 .groovy 文件定义一个 Groovy 类。但是,您可能想在脚本中 实现用于确定创建哪种 类型的 bean 的逻辑。例如,可以在 GroovyPdfGenerator.groovy 中定义 PdfGenerator 接口的两种不 同的实现,并直接在脚本中执行确定应该返回 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |