我现在的项目是利用春节,我们的设计师已经决定让Spring管理服务,存储库和工厂对象,而不是域对象。 我们正密切关注领域驱动设计。 不使用弹簧域对象背后的原因主要是春天只允许静态依赖注入。 我所说的静态依赖注入的意思是说依赖是XML配置中指定的,他们得到“冻结”。
我也许错了,但我目前的理解是,即使我只域利用接口与对象进行通信,但春天的XML配置力量我指定一个具体的依赖。 因此所有具体的相关性具有在部署时得到解决。 有时候,这是不可行的。 我们的大部分usecases是基于注射基于运行时的数据或从最终用户接收到的消息的特定类型。
我们的大多数设计是下面的命令模式。 因此,当我们收到的命令,我们想构造基于从命令接收到的数据提供了域模型和,我们注入组特定类型的进我们聚合根对象。 因此,由于缺乏春天的构建基于运行时数据域模型的能力,我们被迫使用静态工厂方法,建筑商和工厂模式。
可有人请告知,如果弹簧具有上述方案的问题吗?
我可以用AOP注入依赖,但后来我没有充分利用Spring的基础设施。
我建议你阅读有关春节文档的部分使用AspectJ来注入域对象与Spring 。
有趣的是,你说:“我可以使用AOP注入依赖,但后来我没有充分利用Spring的基础设施,”考虑到AOP是Spring的基础设施的核心部分。 两个去很好地结合在一起。
上面的链接可以让你有Spring的AOP透明地依赖注入正在创造没有直接引用到春节基础设施领域对象(例如,使用了new
运营商)。 这是非常聪明的,但确实需要一些深层次的类加载修修补补。
Spring的依赖注入/配置只是针对配置低级别的技术基础设施,如数据源,事务管理,远程调用,servlet的挂载点,等等。
您可以使用弹簧技术的API与您的服务路线,以及这些服务中你只写普通的Java代码。 从您的域模型和服务实现保持春天离开是一件好事。 一开始,你不想配合你的应用程序的业务逻辑,一个框架或让低级别的技术问题“泄漏”到你的应用程序域模型。 Java代码更容易在IDE比春季的XML配置进行修改,因此保持在java中让我们的业务逻辑,你提供新功能更迅速,更容易维护应用程序。 Java是一种比春天的XML格式,更富于表现力,所以你可以,如果你坚持普通的Java更清晰的模型域的概念。
Spring的依赖注入(和依赖注入在一般),基本上是布线一起服务,存储库和工厂等。它不应该直接处理的事情,需要在响应命令等,其中包括大部分的东西与域动态完成对象。 相反,它提供了如何将这些东西都允许您在电线要使用做出来的对象进行控制。