Seam是JBoss 的新的框架,号称Java的ROR.下面我想对它的一些特性和Spring做一番比较.

Seam的概念是基于Component的,集成了JSF+EJB3.0以及它选用的AJAX框架Ajax4JSF,还有它的工作流jBMP等等.使用了新的XHTML技术,页面上都是标签,被JSF封的死死的,就连Ajax也是以标签的形式出现,这不得不说是一场革命性的变革.以后的程序员可能再也不用写request.getParameter之类的东西了,程序员将不必再关注底层的代码,更关心的是流程,webflow,workflow流程的定义.

现在我们来回忆一下Spring1.x怎么开发J2EE应用的(虽然Spring2.x加入了bean对象生命周期的管理)...Spring配置的单态bean有两种方式:单态和原型.都是无状态的bean,我觉得这样的设计在没有什么太多的业务逻辑的时候完全没有问题,简单的CRUD操作不涉及太多的状态,但是对于一个有着复杂的业务流程的系统,这样做是有问题的,如网上订单购物系统,中间状态如何保存?对于原来的J2EE应用,如果不用EJB,我们可以有两种解决方法,一种是保存在session里,另一种是保存在数据库里.前一种的问题是:用户操作的时候,有很多事情要做,一个session里放入过多的不同业务的属性,状态是很混乱的,而且随着用户操作,session将越来越大.这是不合理的.第二种方式:存到数据库里,如果并发很大的情况,那么频繁的访问数据库是灾难性的,每个状态都要保存到数据库里,不可想象.所以说Spring1.x设计是很有问题的.就算Spring2.0有了状态的管理,也是基于session级别的bean,我觉得没什么用.:-)那么Seam是怎么做的?我下面将阐述Seam的解决方案...

Seam框架里用到一个context的概念,和我们所说的scope对应.除了request(seam里叫event),page,session,application以外,还加入了新的context,conversation context和business process context这两种,大家一看就明白了,基于会话和业务逻辑的生命周期在解决上述问题的时候是更加合理的.只要你的应用有业务的流程,这样是很正确的.会话上下文的范围是在request和session之间,业务逻辑上下文是jBMP工作流引擎来管理的,Seam更偏重对象生命周期的管理,JSF和entity bean绑定,通过session bean的listener控制输出.我相信Seam会更有前途,当然这里没有说不应该用Spring.

综上所述,个人感觉,如果J2EE应用没有过多的业务逻辑和状态的设计,用Spring是很好很好的解决方式,对数据的保存,无状态的业务bean的使用是一点问也没有的.所以在选择框架的时候,需要大家考虑清楚:-)

以后我将陆续推出seam框架的使用方法介绍的文章,各种技术同Spring 的对比,如AOP,RichClient,webflow等,以及对持久层的支持,hibernate3,EJB3.0的支持,对JPA标准的支持,对annotation的支持等等...

以上文字全都是原创的,仅仅代表个人观点.

Seam框架学习之一(Seam vs Spring -- state vs stateless)相关推荐

  1. JSF+Seam框架学习心得

    http://developer.51cto.com   我目前的项目前端使用的是JSF+Seam框架,目前项目已经进入尾声,我想把一些心得体会给大家说说,以便大家在使用JSF的时候,少走弯路. 1. ...

  2. Spring框架学习笔记05:Spring AOP基础

    文章目录 一.Spring AOP (一)AOP基本含义 (二)AOP基本作用 (三)AOP与OOP (四)AOP使用方式 (五)AOP基本概念 任务:骑士执行任务前和执行任务后,游吟诗人唱赞歌 (一 ...

  3. Spring框架学习笔记06:Spring JdbcTemplate入门

    文章目录 一.JdbcTemplate概述 (一)JdbcTemplate作用 (二)JdbcTemplate操作数据库常用方法 二.数据库连接池 (一)连接池原理 (二)常见数据库连接池 1.DBC ...

  4. SSM框架学习总结第零篇--框架是什么

    SSM框架系列文章: SSM框架学习总结第零篇–框架是什么 SSM框架学习总结第一篇–MyBatis SSM框架学习总结第二篇–Spring SSM框架学习总结第三篇–Spring MVC SSM框架 ...

  5. JBoss Seam框架

    JBoss Seam框架简单介绍 一.Seam适应快速开发.简化框架的趋势 在RoR流行之前,Java社区的主流还是非常讲究分层.架构.复用和模式,而比较忽视快速开发和简化架构的,其结果就是代码量大. ...

  6. Spring框架学习day_01: 框架配置方式/ 管理对象的作用域/ 生命周期/ 组件扫描/ 单例模式:“懒汉式“,“饿汉式“

    1. Spring框架的作用 Spring框架的主要作用是创建对象和管理对象. 创建对象:类似于User user = new User(); 管理对象:随时可以通过Spring框架获取对象,甚至Sp ...

  7. spring boot框架学习学前掌握之重要注解(2)-通过java的配置方式进行配置spring

    本节主要内容: 1:通过代码演示实现零XML配置spring 2:使用重点注解理解 声明: 本文是<凯哥陪你学系列-框架学习之spring boot框架学习>中spring boot框架学 ...

  8. (转)MyBatis框架的学习(六)——MyBatis整合Spring

    http://blog.csdn.net/yerenyuan_pku/article/details/71904315 本文将手把手教你如何使用MyBatis整合Spring,这儿,我本人使用的MyB ...

  9. Spring框架学习(二)

    Spring框架学习笔记---->AOP AOP概念 AOP:aspect oriented programing,面向切面编程. 将软件的各个模块,按照横向的角度进行观察,发现各个模块之间存在 ...

最新文章

  1. keras训练完以后怎么预测_使用Keras建立Wide Deep神经网络,通过描述预测葡萄酒价格...
  2. 寒假训练,2.25,J-Palindrome Names (回文
  3. 使用system函数时应该忽略两个信号
  4. 【学习笔记】2、Python - Jupyter Notebook界面基础
  5. mySQL字符串字段区别_MySQL类型之(字符串列类型区分、数据类型区分)
  6. JeeWx 捷微 2.1 发布,微信管家平台
  7. php v命令找不到,-bash: php: command not found 命令找不到
  8. 重读博弈论(四)-重要的基本概念的理解:风险爱好、风险中性、风险厌恶(风险避规)...
  9. micropython入门指南-电子工业出版社-网上书店
  10. 阿里天池用Pandas揭秘美国选民的总统喜好附加题
  11. OC 计算幂集 - 递归法
  12. 程序员的自我修养之数学基础05:线性方程组解的情况(矩阵的初等变换和高斯消元法)
  13. 4-20mA电流光纤中继器的原理和应用
  14. Java项目——云R记
  15. VMware扩展Ubuntu分区容量大小
  16. 跨专业考计算机研究生有专业限制吗,跨专业考计算机研究生难不难
  17. 使用tensorboard出现:“couldn‘t build proto file into descriptor pool!”的解决方法
  18. substring与substr的区别
  19. 计算机中二进制的加法
  20. 【OSChina-MoPaaS应用开发大赛】幼家宝

热门文章

  1. 【C语言】求一个数的阶乘
  2. linux服务器安全管理工具,JShielder:一款自动化Linux服务器安全增强工具
  3. 邮寄地址英文翻译总汇
  4. 关于动车高铁安全性的一点浅见
  5. visual studio如何不使用system(“pause”)仍可暂停
  6. Vue响应式原理探究之“发布-订阅”模式
  7. 反相器动态功耗计算和短路电流
  8. 多节点CDN缓存加速系统wdcdn2.0.1版本发布
  9. 分布式存储系统etcd初探
  10. Go的简单入门:开始使用模糊测试