Java Spring DI、域模型和;最佳做法

Java Spring DI、域模型和;最佳做法,java,spring,dependency-injection,Java,Spring,Dependency Injection,在Spring中不注入域模型是个好主意吗。它保存了一些XML,注入域模型还有什么用呢 对于服务和DAO,我想解耦,所以我使用DI,但域模型通常从Web一直流到DAO——有点像是一个垂直层,贯穿于水平面 你觉得怎么样?好还是坏?是否有其他推荐的最佳实践可以明智地使用Spring而不是添加到XML行中 有人建议我在服务层使用工厂模式,但这比DI框架背后的整个想法要好,不是吗?工厂模式是一个好主意,但这将导致锅炉板代码,因此它将成为锅炉板代码Vs XML 欢迎在其他领域明智地使用Spring的任何建议

在Spring中不注入域模型是个好主意吗。它保存了一些XML,注入域模型还有什么用呢

对于服务和DAO,我想解耦,所以我使用DI,但域模型通常从Web一直流到DAO——有点像是一个垂直层,贯穿于水平面

你觉得怎么样?好还是坏?是否有其他推荐的最佳实践可以明智地使用Spring而不是添加到XML行中

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


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

嗯,您不应该注入具体的模型对象。这不是DI的目的。您可能要做的是按照某人告诉您的那样为模型对象注入工厂。 通过这种方式,您可以模拟您现在不想测试的“重要”部分,或者切换实现

DI对于数据库、服务等外部依赖项是有意义的


使用DI“创建”模型对象是可能的,但这并不好

查看此问题的首要答案:


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

这可能会让人困惑,你在模型对象上的意思是什么。如果您指的是包含数据但没有特定功能的简单JavaBean,那么没有必要对其进行模拟。但我不认为你在想这个

如果您引用具有特定业务逻辑的对象,那么任何DI都是有用的。在这里您可以找到Guice的示例-它不是Spring,但仍然是DI实现:。他们建议使用DI代替工厂。一个缺点可能是依赖于DI,除非只注入到字段

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