论坛首页 Java企业应用论坛

JSF的加减法与Seam(二)之对java的改进

浏览 17210 次
该帖已经被评为良好帖
作者 正文
   发表时间:2007-11-07  
nihongye 写道

这应该称为一半的依赖注入。因为利用注解,所以叫一半,通过维护一个名字空间(你文里所说的全局域管理)来实现。名字空间的维护不是原因,依赖注入才是有趣现象的本质。


注解或是xml,只是配置方法不同,为何注解就是一半呢?

您的名字空间的说法我同意,任何两个紧耦合的事物,总是可以通过加一层mapping层来使之松散耦合,而名字空间就是这里的mapping层。其实从类变为接口与扩展类,spring也做得到,因为spring也有名字空间。但是对于仿静态方法调用,spring就无能为力了。spring虽然有名字空间,但是域管理是欠缺的。
0 请登录后投票
   发表时间:2007-11-07  
zaya 写道
nihongye 写道

这应该称为一半的依赖注入。因为利用注解,所以叫一半,通过维护一个名字空间(你文里所说的全局域管理)来实现。名字空间的维护不是原因,依赖注入才是有趣现象的本质。


注解或是xml,只是配置方法不同,为何注解就是一半呢?

您的名字空间的说法我同意,任何两个紧耦合的事物,总是可以通过加一层mapping层来使之松散耦合,而名字空间就是这里的mapping层。其实从类变为接口与扩展类,spring也做得到,因为spring也有名字空间。但是对于仿静态方法调用,spring就无能为力了。spring虽然有名字空间,但是域管理是欠缺的。

因为注解指定了名字,这是为了方便而导致的一种限制。不是因为名字空间而能注入,而是对象提供了注入的途径,那么就能注入。
new Book(new 50张Page()) 用到了名字空间吗?没有.
0 请登录后投票
   发表时间:2007-11-08  
3.2 全局域管理模型的构筑因素

前面提到过,全局域管理并非是web世界所独有的,它是一个OO问题,牵涉到对对象,内存管理的方式。在全局域管理的模型下,一个对象变得像它的类了,类变得像接口了,动态方法变得像静态方法了,应用由网状的类与类之间的关系,变成了伞状的中心-周边的容器-类之间的关系。前面一直在写Seam,是因为Seam首先大规模引入这样的模型,很多对模型本身的说明必须考虑Seam的实现方式。下面会舍弃Seam这个例子而考虑更抽象的内容,探讨一下对全局域管理模型的一些其它思考。

既然全局域管理是OO问题,是对内存管理的方式,那么这种模式当对OO世界的所有语言都适用,甚至也可以运用这一原则编一种新的语言出来。自然,这一论断是非常理论化的,OO语言间也有很大的区别,在实际中是有很多局部因素需要考虑的。我个人自然不可能了解各种OO语言以及它们各自都有什么区别,我这里只想局限自己的话题,谈一下是否有可能从底层(比如一个J2SE框架,或者jvm扩展,或者一种新的语言)实现这样一个东西,如果实现得话,有哪些因素是必要考虑的,哪些则是可能的问题。

3.2.1 要求

3.2.1.1 加载-销毁
显而易见,运行时(run-time)的类加载和类销毁是一个必须的能力。因为任何一个对象都是和容器(或者框架,或者jvm扩展,或者新语言环境)交流,当它需要一个其它类的时候它向容器发出请求,由容器决定返回什么,这就决定了所有的被依赖类都必须在运行时动态加载。这一要求直接决定了一些OO语言无法支持。//TODO
3.2.1.2 类配置//TODO
3.2.1.3 容器连接点//TODO
3.2.1.4 域事件//TODO
3.2.1.5 预设域//TODO

3.2.2 可能问题

3.2.2.1 加载性能//TODO
3.2.2.2 大量对象//TODO
3.2.2.3 界定域//TODO
3.2.2.4 与底层的耦合//TODO



3.3 冲击与反思

3.3.1 测试框架
目前Seam的框架使用得是TestNG,虽然比起JUnit来说有所改进,但是仍然是对以往应用做测试的方法。建议域管理模型下构筑一种新的测试框架,该框架包括对域连接点Contexts的mock,也应当包括对各种域的mock,并且能够提供一种机制是自己写得mock可以方便得传给mock域。这样可以把参数传递的工作省下来。//TODO

(这篇文章就写到这里吧,我觉得太抽象了似乎跑题,或许以后会把抽象的内容提出来另发。)
1 请登录后投票
   发表时间:2007-12-05  
难得的好文章。
0 请登录后投票
   发表时间:2008-01-29  
借lz的人气问个问题:问什么我在一个Pageflow里, 如果想跳转到其他连接会报Illegal navigation的错误, 并且没有办法跳转过去, 何解啊?
<?xml version="1.0"?>

<pageflow-definition xmlns="http://jboss.com/products/seam/pageflow"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://jboss.com/products/seam/pageflow http://jboss.com/products/seam/pageflow-2.0.xsd"
	name="register">

	<start-state name="start">
		<transition to="account" />
	</start-state>

	<page name="account" view-id="/register/account.xhtml">
		<redirect />
		<transition name="next" to="checkPassword" />
	</page>

	<decision name="checkPassword"
		expression="#{userService.isValidateAccount}">
		<transition name="true" to="contact" />
		<transition name="false" to="account" />
	</decision>

	<page name="contact" view-id="/register/contactInfo.xhtml"
		no-conversation-view-id="/register/account.xhtml">
		<redirect />
		<transition name="prev" to="account" />
		<transition name="next" to="complete">
			<action expression="#{userService.saveUser}" />
		</transition>
	</page>

	<page name="complete" view-id="/register/complete.xhtml"
		no-conversation-view-id="/register/contactInfo.xhtml">
		<end-conversation />
		<redirect />
	</page>
</pageflow-definition>

0 请登录后投票
   发表时间:2008-03-03  
写的相当棒啊,让我对java对象的生死八字有了比较深刻的认识
0 请登录后投票
   发表时间:2008-08-13  
楼主思想深刻,不知seam+pojos有何优缺点,ejb3是好东西,但是有时候环境不允许,还请楼主指教一二。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics