论坛首页 Java企业应用论坛

在Spring中DAO与Service关于依赖注入写法探讨

浏览 24221 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-18  
DAO不多,直接注入DAO到service,DAO多且之间交互多,搞个DAO总管比较省事。service之间轻度依赖倒也无妨。我的系统设计原则是既不要配置膨胀,也不要“依赖树”过度膨胀,保持一定的层次,最小接口原则和人性化接口之间寻求平衡。
1 请登录后投票
   发表时间:2008-12-18  
第二种方式搞清楚嵌套事务问题。还是不错的选择。DAO层次负责数据的基本操作,业务逻辑层负责管理业务,如果一个业务依赖另两个业务也是需求上的要求。这样业务逻辑层反而比较清晰。
0 请登录后投票
   发表时间:2008-12-18  
没有怎么看懂,DAO不需要注入到sessionFactory中吗?
0 请登录后投票
   发表时间:2008-12-18  
tagName 吧
0 请登录后投票
   发表时间:2008-12-18  
llade 写道
DAO不多,直接注入DAO到service,DAO多且之间交互多,搞个DAO总管比较省事。service之间轻度依赖倒也无妨。我的系统设计原则是既不要配置膨胀,也不要“依赖树”过度膨胀,保持一定的层次,最小接口原则和人性化接口之间寻求平衡。


llade的观点我很赞同。

写个比较通用的DAO,这样子不需要所有的都写DAO才可以有的,比如论坛里很多人写到的用泛型写DAO,那么对于通用DAO可以只写一个:
<bean id="genericDao" class="com.test.impl.GenericHibernateDaoImpl" lazy-init="true">
   <property name="sessionFactory" ref="sessionFactory" />
</bean>

在其它的地方的DAO可以就这么写XML配置文件而不需要写DAO的类了
<bean id="dao1" parent="genericDao">
   <constructor-arg value="com.joyosoft.system.model.Model1" />
</bean>

在调用的时候可以通过
GenericHibernateDao<Model.class> dao1 = getBean("dao1")

0 请登录后投票
   发表时间:2008-12-18  
楼上你的方法我认为适用性不高

如果我需要很多个不同model的DAO了?

0 请登录后投票
   发表时间:2008-12-18   最后修改:2008-12-18
我选第二种,理由只有一个,业务层方法尽量独力,它是修改最频繁的代码,要重用的只是dao
0 请登录后投票
   发表时间:2008-12-19   最后修改:2008-12-19
第二种好点,但也有不好的地方,不应该在一个service种注入多个dao.个人认为service层应该只针对一个Dao,如果有其它的模块依赖那就产生出另一个service来处理它们的依赖关系,这样就可以清晰的知道哪些service是被依赖的。也就是应该分有哪些是稳定的service,哪些是不稳定的service。
0 请登录后投票
   发表时间:2008-12-19  
没什么好说的  第二种  。。。
0 请登录后投票
   发表时间:2008-12-19  
我觉得第一种好,service中再注入service就有service之间的耦合了。
0 请登录后投票
论坛首页 Java企业应用版

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