该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-11-07
nihongye 写道 这应该称为一半的依赖注入。因为利用注解,所以叫一半,通过维护一个名字空间(你文里所说的全局域管理)来实现。名字空间的维护不是原因,依赖注入才是有趣现象的本质。 注解或是xml,只是配置方法不同,为何注解就是一半呢? 您的名字空间的说法我同意,任何两个紧耦合的事物,总是可以通过加一层mapping层来使之松散耦合,而名字空间就是这里的mapping层。其实从类变为接口与扩展类,spring也做得到,因为spring也有名字空间。但是对于仿静态方法调用,spring就无能为力了。spring虽然有名字空间,但是域管理是欠缺的。 |
|
返回顶楼 | |
发表时间:2007-11-07
zaya 写道 nihongye 写道 这应该称为一半的依赖注入。因为利用注解,所以叫一半,通过维护一个名字空间(你文里所说的全局域管理)来实现。名字空间的维护不是原因,依赖注入才是有趣现象的本质。 注解或是xml,只是配置方法不同,为何注解就是一半呢? 您的名字空间的说法我同意,任何两个紧耦合的事物,总是可以通过加一层mapping层来使之松散耦合,而名字空间就是这里的mapping层。其实从类变为接口与扩展类,spring也做得到,因为spring也有名字空间。但是对于仿静态方法调用,spring就无能为力了。spring虽然有名字空间,但是域管理是欠缺的。 因为注解指定了名字,这是为了方便而导致的一种限制。不是因为名字空间而能注入,而是对象提供了注入的途径,那么就能注入。 new Book(new 50张Page()) 用到了名字空间吗?没有. |
|
返回顶楼 | |
发表时间: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 (这篇文章就写到这里吧,我觉得太抽象了似乎跑题,或许以后会把抽象的内容提出来另发。) |
|
返回顶楼 | |
发表时间:2007-12-05
难得的好文章。
|
|
返回顶楼 | |
发表时间: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> |
|
返回顶楼 | |
发表时间:2008-03-03
写的相当棒啊,让我对java对象的生死八字有了比较深刻的认识
|
|
返回顶楼 | |
发表时间:2008-08-13
楼主思想深刻,不知seam+pojos有何优缺点,ejb3是好东西,但是有时候环境不允许,还请楼主指教一二。
|
|
返回顶楼 | |