浏览 4459 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-05-28
本人翻译目的是用来学习Tapestry5的,共享出来希望大家批评指正。计划持续翻译。
chinajavawolf
Tapestry/Spring 集成
提供Tapestry和Spring的集成,允许通过Spring定义的beans被注入在Tapestry IoC服务内,并且在Tapestry组件内。
版本
这个模块这对Spring1.2.8进行的编译和测试。然而,Spring2.0完全向后兼容Spring1.2.8。
这个模块使用Maven空间“提供”Spring的依赖。这意味着在你的POM内,你将需要指定你自己的依赖给Spring。包括正确的版本。例如:
使用默认的Maven空间,Spring JARs和依赖将被打包到你的应用的WAR文件内。
用法
这个集成被设计为一个非常薄的层,在Spring为web应用的标准配置之上。
详细的用法在可用的Spring 1.2.x文档内。
简单的形势是你必须做两个小的改变对你应用的web.xml。
首先,一个特定的过滤器被用来替换标准的TapestryFilter。
其次,你必须添加标准的Spring配置,其中包括< listener >元素和(可选的)<context-param>确定加载哪个Spring bean配置文件:
<context-param>列出Spring bean配置文件。它是可选的并且默认的,如果仅是/WEB-INF/applicationContext.xml 可以省略。
ContextLoaderListener负责读配置文件的bean并且存储他们在application context内,Tapestry-Spring集成代码在那里使用它。
在你的组件类内,你可以使用Inject标注。典型的,仅是字段域类型充分确定Spring bean 的注入:
如果你有多个bean实现同一接口(对于实例,如果你已经包裹你的bean使用你的事务拦截器),你必须消除歧义。最简单的方法是添加一个Service标注来确定Spring bean的名字:
通过构建器方法或自动构建注入Spring bean是一样的:Spring beans完全就像Tapestry IoC的服务一样。
语法灵敏性
Spring bean 名字被完全加工成Tapestry IoC服务的ids。因为服务ids忽略大小写,通过bean名字访问Spring bean 也将忽略大小写。
WebApplicationContext 服务
Spring WebApplicationContext 也被作为一个服务添加,除了定义在context内的服务外。
局限性
Bean的名字在应用启动时被获得。如果新的beans是在运行时加入Spring application context内的,这对于注入是不可见的。
只有bean的名字是可用的,不是任何bean的别名。
当有两个只是名字大小写不同的bean时,不检查名字冲突将发生。如果你继续提供名称为
"userDAO" 和"UserDao"的bean ,你只会自找麻烦。
非单例beans没有完全控制。Tapestry将从application context请求bean在某种意义上这不相称他们的生命周期。目前,你应该考虑非单例bean为非可注入的。代替的,注入WebApplicationContext服务然后获得非单例beans作为必须的。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |