Spring 银行交易的领域和服务方法
我试图学习Spring框架,并看到许多示例使用域和服务对象(域驱动设计?),但我无法真正理解如何实现它们。例如,我尝试对一个简单的银行应用程序建模,该应用程序包含客户、帐户和交易。以下是我的模型草案:Spring 银行交易的领域和服务方法,spring,domain-driven-design,Spring,Domain Driven Design,我试图学习Spring框架,并看到许多示例使用域和服务对象(域驱动设计?),但我无法真正理解如何实现它们。例如,我尝试对一个简单的银行应用程序建模,该应用程序包含客户、帐户和交易。以下是我的模型草案: Domain objects: Customer id userName password Account: id customerId balance Tra
Domain objects:
Customer
id
userName
password
Account:
id
customerId
balance
Transaction:
id
accountId
amount
transactionDate
transactionType
Service objects:
AccountService:
create(Account)
update(Account)
debit(Account,amount,date,remarks)
credit(Account,amount,date,remarks)
transfer(fromAccount,toAccount,amount,remarks)
findAccountsByCustomerId(customerId)?
CustomerService:
findCustomerByName()
findAccountsByCustomerId(customerId)?
你应该看看官方的Spring示例应用程序,给你一个想法。如果你的对象可以“满足”你的需求,那么它应该在你的模型中,因为它是域驱动的。如果问题是关于上下文(时间、检查外部系统等),那么它只能在服务中完成(或者您的模型中会有关于外部内容的依赖项:您不希望这样)。谢谢@LMeyer,这非常有帮助。在PetClinic应用程序中,只定义了一个将处理所有域对象的服务(ClinicService)。那么我应该只创建一个服务作为BankService吗?即使是复杂的应用程序也只有一个服务?对不起,我是这个服务/领域模型的新手,正在尝试了解它们的范围。@Skar不一定,PetClinic是一个简单的应用程序,所以一个服务是好的,它仍然是一致的(毕竟诊所确实处理宠物、兽医和客户)。然而,在更复杂的应用程序中,并没有什么可以阻止你们做一些像现在这样的服务。总的来说,只是不要打破规则