为Web应用构建Spring—Seam混合型组件
转自:http://www.xinzhanedu.com/?thread-3405-1.html
?
Spring和JBoss Seam框架为企业web应用的开发分别提供了不同的特性。Spring是一个JavaEE中间件框架,它建立在像POJO抽象、依赖注入(Dependency Injection)和面向方面编程(Aspect Oriented Programming)等特性上,它提供了与Hibernate、TopLink和iBatis等框架的集成。而Seam则是一个集成了如AJAX、Java Server Faces (JSF)、企业Java Beans (EJB3)、Java Portlets及业务流程管理 (BPM)等技术的web应用框架。在开发web应用的过程中,这两者能否结合起来使用或者同时应用这两个框架是否有意义呢?最近有篇文章就专门讨论了这个话题,而且,在java社区论坛上也主要关于如何将这两个框架结合使用并各取所长展开了激烈的讨论。?
Dan Allen最近写了两篇关于如何将Spring和Seam框架集成到web应用中的文章。在第一篇文章中,他解释了如何利用Seam和Spring容器功能来创建混合型组件。他说,Seam统一了JSF、JPA、EJB 3和其他一些技术,但它不支持Spring所能提供的一些简易特性,比如轻量级远程技术(lightweight remoting)、AOP声明、框架模板类(framework template classes)以及资源注入(resource injections)。而这些Seam不支持的功能点,就是能够或者说值得创建Spring-Seam混合组件的地方,我们可以在这些地方创建可以同时从Seam和Spring容器的功能中获益的对象。Seam提供模块支持将Spring框架集成到web应用中,也支持关于应用组件和底层资源的共享。?
作者通过一个web应用实例,向读者阐述了如何通过使用Seam提供的ContextLoader组件和将seam:component内嵌到Spring元素中把Spring“装饰”成一个Seam组件的方式,最终将Spring beans集成到Seam应用中。他也提到了另一个将Spring和Seam集成的方法,那就是使Seam容器与Spring之间通过使用定制的EL(表达式语言)解析器来通信。