论坛首页 Java企业应用论坛

简单,易于Mock,仅依赖Spring的Domain Model

浏览 31164 次
该帖已经被评为精华帖
作者 正文
   发表时间:2008-05-21  
quaff 写道
galaxystar 写道
如果是分布式数据访问,远程调用?对象是反序列化生成的,那么这个是否只能在服务端进行静态注入?

加上transient


可能没表达清楚,就是说,服务端返回的domain object应该是具有客户端远程调用功能的,这个功能的实现,可以理解为dao。
这个dao需要在服务端将对象返回到客户端后,注入进去(现在是通过AOP这么做的)。
或者服务端就将客户端实现注入进去,但是这种做法,会导致服务端跟客户端的耦合。
0 请登录后投票
   发表时间:2008-05-22  
用一句话概括spring就是:“开发人员需要某一个对象实例的时候可以去取,关于对象的创建和对象之间的依赖关系,就让spring去维护吧”,如果我们再去维护过多的依赖关系,比如说你的领域对象domain object,其中依赖了许多的dao,违背了spring的初衷。
假如你的Teacher,Student...业务逻辑有变化,例如学校要给每一个Teacher,Student建立医保档案,可能又需要在Teacher,Student中加入一个用于处理医保的dao了,不仅违背了OO的思想,也不符合当前的业务需要。
1 请登录后投票
   发表时间:2008-05-22  
ljl 写道
用一句话概括spring就是:“开发人员需要某一个对象实例的时候可以去取,关于对象的创建和对象之间的依赖关系,就让spring去维护吧”,如果我们再去维护过多的依赖关系,比如说你的领域对象domain object,其中依赖了许多的dao,违背了spring的初衷。
假如你的Teacher,Student...业务逻辑有变化,例如学校要给每一个Teacher,Student建立医保档案,可能又需要在Teacher,Student中加入一个用于处理医保的dao了,不仅违背了OO的思想,也不符合当前的业务需要。


帖子的第一句话就声明了,你这个是质疑domain model,推荐你可以看看以前关于domain model的帖子以及相关的书籍,主要有《企业应用架构模式》,《领域驱动开发》和《pojos in action》,全都有中文版。
0 请登录后投票
   发表时间:2008-05-22  
galaxystar 写道
quaff 写道
galaxystar 写道
如果是分布式数据访问,远程调用?对象是反序列化生成的,那么这个是否只能在服务端进行静态注入?

加上transient


可能没表达清楚,就是说,服务端返回的domain object应该是具有客户端远程调用功能的,这个功能的实现,可以理解为dao。
这个dao需要在服务端将对象返回到客户端后,注入进去(现在是通过AOP这么做的)。
或者服务端就将客户端实现注入进去,但是这种做法,会导致服务端跟客户端的耦合。

返回给客户端的Domain Object应该设计成只作为数据载体,dao是没办法也传到客户端的
0 请登录后投票
   发表时间:2008-05-22  
楼主的想法不错,不过domain object不能直接暴露给Action,必须用service加事务脚本,可不可以直接依赖注入service呢?
0 请登录后投票
   发表时间:2008-05-23  
galaxystar 写道
quaff 写道
galaxystar 写道
如果是分布式数据访问,远程调用?对象是反序列化生成的,那么这个是否只能在服务端进行静态注入?

加上transient


可能没表达清楚,就是说,服务端返回的domain object应该是具有客户端远程调用功能的,这个功能的实现,可以理解为dao。
这个dao需要在服务端将对象返回到客户端后,注入进去(现在是通过AOP这么做的)。
或者服务端就将客户端实现注入进去,但是这种做法,会导致服务端跟客户端的耦合。


这种设计不是这样的,在服务器端的service层就是DomainObject的运行边界(同时也是事务的边界),客户端到服务器端(进程外/远程通信)是通过DTO对象或者一些简单数据(Array,List,Map,String,Integer)的组合,进行交互。
2 请登录后投票
   发表时间:2008-06-02  
恕我眼拙,我在《领域驱动开发》和《pojos in action》当中通篇都找不到domain object 需要依赖dao的证据。
0 请登录后投票
   发表时间:2008-06-02  
nighthawk 写道
恕我眼拙,我在《领域驱动开发》和《pojos in action》当中通篇都找不到domain object 需要依赖dao的证据。


呵呵,拿《pojos in action》来说,第88页,“实现方法”“访问仓库的各种选择”,以及其代码中的注释How to access this?都是说明如何将Repository(也就是Dao)放进到 Domain Object里。
0 请登录后投票
   发表时间:2008-06-04  
http://blog.springsource.com/main/2008/01/23/new-improvements-in-domain-object-dependnecy-injection-feature/
与这个篇文章相比有什么不同?其中关键字 transient的使用有点不明白,请指教?
0 请登录后投票
   发表时间:2008-06-04  
http://blog.springsource.com/main/2008/01/23/new-improvements-in-domain-object-dependnecy-injection-feature/
与这个篇文章相比有什么不同?其中关键字 transient的使用有点不明白,请指教?
0 请登录后投票
论坛首页 Java企业应用版

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