在seam组件中这样声明:
@In(value="#{userService}", request=false)
private UserService userService;
这个示例为seam组件注入了由spring管理的用户服务对象,它的value是从jsf EL变量中获取,request=false在告诉seam,如果当前的值没有找到,那么设置为空,否者当出现没有找到的情况,seam会抛出空异常。
@Out属性主要是把处理过的属性值会由seam重新再付给上下文也就是Out中所定义的ScopeType上下文,我认为虽然是seam的一个特点,但是在我的应用中不多,主要是注入而非双射!如果它真的能在短期Conversation中有所作用来代替Myfaces的数据保持机制,我想会好些,我目前只是在长Conversation有所应用。
3 .@Factory,@DataModelSelection,@DataModel,它们主要来代替数据列表的使用,主要是减少了代码量,Factory是在请求值阶段就对需要实例化的对象进行创建,DataModelSelection定义的属性,可以透明的抓取数据列表选择的单行数据,DataModel属性减少了不必要的get,set。然而我在实际的使用中由于很多不定的情况,大部分的使用上又回到jsf标准的get方式。 这种开发方式我认为seam的目的是想屏蔽与页面不必要的关系细节,让开发只需要重视真正的业务,是一个标准的面向对象式结构,当jsf的体系结构的不断优化,类似这种开发方式我想会越来越有用。
4. @RequestParameter是个很有用的注释,它自动把当前属性和页面同名的request提交值绑定在一起,虽然这样使用违背了jsf所追求的面向对象化,http透明化,但是实际开发中会后很多意想不到的情况,有时候在集成式页面这样的做法会很有用,当你的页面中不仅仅有jsf标签就清楚了!

