精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-12
最后修改:2008-12-15
方法一: <bean id = "dao1" class = "com.test.Dao1" /> <bean id = "dao2" class = "com.test.Dao2" /> <bean id = "service1" class = "com.test.Service1"> <property name="dao1" ref="dao1" /> <property name="dao2" ref="dao2" /> </bean> <bean id = "dao3" class = "com.test.Dao3" /> <bean id = "dao4" class = "com.test.Dao4" /> <bean id = "service3" class = "com.test.Service3"> <property name="dao3" ref="dao3" /> <property name="dao4" ref="dao4" /> </bean> <bean id = "bizService" class = "com.test.BizService"> <property name="dao1" ref="dao1" /> <property name="dao2" ref="dao2" /> <property name="dao3" ref="dao3" /> <property name="dao4" ref="dao4" /> </bean> 方法二: <bean id = "dao1" class = "com.test.Dao1" /> <bean id = "dao2" class = "com.test.Dao2" /> <bean id = "service1" class = "com.test.Service1"> <property name="dao1" ref="dao1" /> <property name="dao2" ref="dao2" /> </bean> <bean id = "dao3" class = "com.test.Dao3" /> <bean id = "dao4" class = "com.test.Dao4" /> <bean id = "service3" class = "com.test.Service3"> <property name="dao3" ref="dao3" /> <property name="dao4" ref="dao4" /> </bean> <bean id = "bizService" class = "com.test.BizService"> <property name="service1" ref="service1" /> <property name="service3" ref="service3" /> </bean> 大家觉得在写BizService的时候注入是用service的注入好呢还是用dao的注入好呢!一起谈谈你们的看法。 个人认为方法一调理比较清晰但较为繁琐,因为如果service1中有了业务逻辑可能到了bizService还要再写一遍,方法二比较简单但到了BizService的时候可能对DAO的调用概念有所模糊化了。对于数据库事务拦截问题,不知道这两种方法是否会有所区别? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-12-15
最后修改:2008-12-15
我倾向于第一种,原因是它比较清晰
吼吼,第一次沙发哦! |
|
返回顶楼 | |
发表时间:2008-12-15
俺也用第一种。可能应用还比较简单,没觉得不便。
|
|
返回顶楼 | |
发表时间:2008-12-15
第二种,很显然,有些service是不需要dao的,而是组合其他service的功能,难道这个组合放action里面?
|
|
返回顶楼 | |
发表时间:2008-12-15
最后修改:2008-12-15
两种我都不同意
如果出现这种代码 <bean id = "service3" class = "com.test.Service3"> <property name="dao3" ref="dao3" /> <property name="dao4" ref="dao4" /> <property name="dao5" ref="dao5" /> <property name="dao6" ref="dao6" /> <property name="dao7" ref="dao7" /> <property name="dao8" ref="dao8" /> </bean> 要多难看就有多难看! 个人认为 service层,不应该依赖IOC! |
|
返回顶楼 | |
发表时间:2008-12-15
service代码层面更多是过程代码,
因此不应该用IOC,直接用一个工厂类得了! 而IOC应该用到领域模型里面! 真正的面向对象! |
|
返回顶楼 | |
发表时间:2008-12-15
使用annotation吧!
@Component("aDao") public ADaoHibernateImpl extends ADao... public ADaoService{ @Autowired public void setADao(Adao adao)... } |
|
返回顶楼 | |
发表时间:2008-12-17
czx566的通过DAO注入DAO的写法其实很少,一般都是通过DAO注入到SERVICE进行业务逻辑操作。所以我个人比较倾向方法二。
|
|
返回顶楼 | |
发表时间:2008-12-17
不明白楼上的话
反正我本人不支持service层用IOC 虽然有些偏执~ 但我觉得程序员很多都有这毛病~ |
|
返回顶楼 | |
发表时间:2008-12-17
我是用第1种方法,但配置明显复杂了,用byName或annotation自动注入的写法,如果已经有service中的方法包含了复杂的业务逻辑写法,而其它service也会用到的话,抽取出来,变成公用的方法,反正尽量减少重复的代码
|
|
返回顶楼 | |