我目前的项目是利用
Spring,而我们的架构师决定让Spring管理服务,存储库和Factory对象,而不是域对象.我们正密切关注域驱动设计.对于域对象来说,不使用弹簧的原因主要是弹簧只允许静态依赖注入.我的意思是静态依赖注入是指在xml配置中指定依赖项,并且它们被“冻结”.
我可能错了,但我目前的理解是,尽管我的域只是利用接口与对象进行通信,但是spring的xml配置迫使我指定具体的依赖关系.因此所有具体的依赖关系必须在部署时解决.有时,这是不可行的.我们的大多数用例基于基于运行时数据或从最终用户接收的消息注入特定类型.
我们的大部分设计是遵循指令模式.因此,当我们收到命令时,我们希望构建我们的域模型,并根据从命令接收的数据,我们将特定的一组类型注入到我们的聚合根对象中.因此,由于缺乏基于运行时数据构建域模型的能力,我们被迫使用静态工厂方法,构建器和工厂模式.
有人可以请指教,如果春天有上述情况有问题吗?
我可以使用AOP来注入依赖关系,但是我没有利用Spring的基础架构.
解决方法
我建议你阅读关于
Using AspectJ to dependency inject domain objects with Spring的Spring文档中的部分.
有趣的是,您说“我可以使用AOP来注入依赖关系,但是我并没有利用Spring的基础设施”,因为AOP是Spring基础架构的核心部分.两人一起走得很好.
上述链接允许您将Spring的AOP透明地将依赖关系引入到不直接引用Spring基础架构(例如使用新的运算符)的情况下创建的域对象.这很聪明,但是需要一些深层次的类加载修补.