Spring DI,Domain Model&最佳做法

时间:2009-10-05 11:01:05

标签: java spring dependency-injection

不在Spring中注入域模型是一个好主意。它可以节省一些XML,无论如何都可以使用注入域模型。

对于服务和DAO,我想要解耦,所以我使用DI,但域模型通常从Web流向DAO - 一种贯穿水平线的垂直层。

你怎么看?是好是坏?有没有其他推荐的最佳实践可以合理地使用Spring而不是添加到XML行?

我被建议在服务层使用工厂模式,但是这比DI框架背后的整个想法更胜一筹,不是吗?工厂模式是一个好主意,但这会导致锅炉板代码,因此它变成锅炉板代码Vs XML。

任何关于明智地在其他领域使用Spring的建议都欢迎!!

3 个答案:

答案 0 :(得分:1)

好吧,你不应该注入具体的模型对象。这不是DI的意思。您可能会做的是为有人告诉您的模型对象注入工厂。 这样你就可以模拟你现在不想测试的“重要”部分,或者你可以切换实现。

DI对数据库,服务等外部依赖关系有意义......

使用DI“创建”模型对象是可能的,但恕我直言。

答案 1 :(得分:1)

看到这个问题的首要答案:

Spring and the anemic domain model

它(特别是它引用的文章)提供了一些非常有趣的方法,可以在没有工厂使用AOP或Hibernate拦截器的情况下做你想做的事。

答案 2 :(得分:0)

这可能令人困惑,你在模型对象上的意思。如果您的意思是简单的JavaBeans包含数据但没有特定的功能,那么就没有必要去模仿它们。但我不认为这是你在想的。

如果您指的是具有特定业务逻辑的对象,则任何DI都可能有用。在这里你可以找到Guice的例子 - 这不是Spring,但仍然是DI实现:http://code.google.com/p/google-guice/。他们建议使用DI代替工厂。一个缺点可能是你依赖DI - 除非你只注入字段。

就个人而言,我宁愿依赖DI来写复杂的工厂。