一、概念:
对广大java开发人员来说,依赖注入或控制返转已经是一个耳熟能祥的概念了。因为seam强调有状态模型,相对于依赖注入来说,它为开发人员带来了一个新的概念:bijection—双向注入。它有如下含义:
1.上下文相关的—双向注入可用来装配位于不同上下文中的有状态对象。例一个位于request或conversation上下文中发对象可以引用一个位于session上下文中的对象,反之亦然,一个位于session上下文中的对象可引用一个位于当前request或conversation上下文中的对象。
2.双向的—对象被调用时,它引用的属性可从上下文变量中注入,也可将其属性作为变量输出到上下文中去。上下文变量可在对象被调用时作为对象属性被维护、修改。
3.动态的—因为上下文变量有可能改变,并且部件是有状态的,所以双向注入每次在对象被调用时都会发生。
从本质上说,通过指定部件实例变量的值是注入、或输出或两者兼而有之,双向注入映射上下文变量到一个部件实例变量
二、用法:
实现方式:按照seam所倡导的,双向注入用@annotation--标注的方式实现。既然是双向,当然要有两个标注--@In、@Out:下面介绍其用法:
@In标注
@In标注指定一个上下文变量的值被注入到一个实例对象的属性,有二种实现方式—在变量前加上@In标注或在set方法前加上@In标注,例:
@Name(“loginAction”)
@stateless
Public class loginAction implement login{
@In User user; //变量前加上@In
…
}
@Name(“loginAction”)
@stateless
Public class loginAction implement login{
User user;
@In //set方法前加上@In
Public void setUser(User user){
This.user=user;
}
…
}
一般情况下,seam根据部件属性或实例变量名在所有上下文中搜索,如果知道变量名,也可以显示指定变量名,如@In(“currentUser”).
如果变量不存在于上下文,而又想部件在实例化的时候即创建属性实例,可以通过指定@In(create=true)实现。
如果部件属性值是可选的,即创建部件时属性不一定必须,则可以通过指定@In(required=false)实现。
对注入而言,甚至可以注入上下文中变量的属性,例如:
@Name(“loginAction”)
@stateless
Public class loginAction implement login{
@In(“#{user.username}”) String username;
…
}
@Out
@Out标注指定部件属性的值输出到上下文,同样有二种文法—通过实例变量或通过get方法。举例如下:
@Name(“loginAction”)
@stateless
Public class loginAction implement login{
@Out User user; //变量前加上@Out
…
}
@Name(“loginAction”)
@stateless
Public class loginAction implement login{
User user;
@Out //get方法前加上@Out
Public void getUser(){
Return user;
}
…
}
一个上下文变量既可以注入部件属性,也可由部件属性输出,例如:
@Name(“loginAction”)
@stateless
Public class loginAction implement login{
@in @Out User user;
…
}
@Name(“loginAction”)
@stateless
Public class loginAction implement login{
User user;
@In //set方法前加上@In
Public void setUser(User user){
This.user=user;
}
@Out //get方法前加上@Out
Public void getUser(){
Return user;
}
…
}
分享到:
相关推荐
### Seam框架核心知识点详解 #### 一、Seam框架简介 Seam,全称为JBoss Seam,是一款基于Java EE 5的技术栈构建的应用框架。它通过整合JSF(JavaServer Faces)与EJB 3.0(Enterprise JavaBeans 3.0)组件,并充分...
Seam 框架的核心在于其独特的上下文注入机制(bijection),该机制不仅极大地简化了依赖管理和组件交互,而且提高了应用的整体性能和可维护性。通过深入理解上述关键知识点,开发者能够更高效地构建出健壮、灵活且...
描述:本文将详细介绍JBoss Seam框架的核心概念、关键特性以及如何构建基于Seam的应用程序。Seam作为一个企业级Java Web应用框架,它将Java EE和JSF无缝集成,旨在填补Java EE 5.0中缺失的框架角色,并为JSR299: Web...
Seam框架的核心优势之一在于它能够无缝地将JSF与EJB3.0进行整合。这意味着开发者可以在保持原有JSF视图层不变的情况下,轻松地利用EJB3.0的强大功能,如事务管理和持久性服务等。这种整合方式极大地提高了开发效率,...
Seam框架是一款革命性的Web应用开发框架,它将标准的Java EE技术与一系列非标准的技术融合在一个一致且统一的编程模型之中。这一框架对WebBeans规范(JSR-299)的发展起到了推动作用,并持续不断地在创新方面做出...