【问题标题】:Use Spring dependency injection in domain model?在域模型中使用 Spring 依赖注入?
【发布时间】:2016-07-24 04:48:16
【问题描述】:

我使用 Spring MVC 已经有一段时间了,并考虑用普通的 Spring(可能是 Spring Boot)创建一个应用程序。我将有几个域数据对象,例如: - 人 - 地址 但是第一个应用程序版本将在没有地址类的情况下构建。我不知道地址类中将存储哪些字段。另外我想用 Hibernate 制作应用程序(所以 Hibernate 将为实例类创建数据库表)。所以我有选择: -首先创建Person类,没有地址字段,但它会不完整,当地址在系统中时需要测试更新。 - 创建地址接口并进行一些实现,如 MockAddress 或 StubAddress,并在 Person 类中创建一个地址接口类型的数据字段。 - 创建没有任何接口和字段/方法的地址类,并将其与人员连接。

我没有找到关于这个主题的很好的解释,那么如何在那里使用 DI 或者是否值得不使用它?我发现的大多数文章都是关于服务层连线的,但不是关于数据模型对象的。

【问题讨论】:

  • 考虑稍微简化您的问题描述,以便您只涉及问题的具体细节。
  • 实际上,我不确定我可以简化什么,所以现在就保持原样。谢谢。

标签: java spring hibernate spring-mvc dependency-injection


【解决方案1】:

依赖注入 (DI) 的威力不在领域模型中;例如,您可能不会从个人到地址域模型关系中的 DI 中受益。您的持久性数据模型,即您的数据库 + Hibernate,应该维护领域模型关系。

不过,管理应用程序配置是使用 DI 组装生产就绪应用程序的理想场所。配置服务层是另一个使用 DI 的好地方。使用依赖注入非常值得您花时间和精力学习,即使对于您所描述的最基本的 Spring 应用程序也是如此。

要开始使用,here's a simple example using Spring Data JPA with Hibernate. 要在域模型更改时升级数据库,请使用 Flyway

【讨论】:

  • 嗨。我检查了您提供的第一个链接,但在域数据对象中没有看到任何依赖注入。这个例子很好,但不能回答我的问题。我错过了什么吗?虽然 Flyway 对我来说绝对是新的,但我明天会检查它......
  • @Pavlo - 该示例确实使用了依赖注入,尽管它在很大程度上隐藏在框架中,除了应用程序中的 @Bean...
  • 是的,我明白了,它将 CustomerRepository 注入到 CommandLineRunner 对象。但是在我的问题中,我询问了从一个数据对象注入另一个数据对象的问题。在您的示例中,如果客户与其他一些数据模型对象(例如地址)连接在一起。问题是:我应该始终将它们紧密连接(地址和客户),还是也可以在这里使用 DI?不仅在将数据对象注入服务时(例如 CommandLineRunner bean)。
  • @Pavlo - 如果您的问题集中在您是否应该在域模型中为您的人-地址关系使用依赖注入,那么问题很可能是否定的。我会澄清我的答案。
  • 嗨。我很高兴你能正确理解我。感谢您的回答:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-22
  • 1970-01-01
  • 2011-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多