我更喜欢仅使事务性的服务方法需要事务性,并控制服务中的事务性而不是控制器中的事务性。您可以创建一个包含其他服务方法的服务方法,并使用spring事务通过@Transactional批注中的传播来管理事务。
@Transactional(propagation =...)
编辑
如果我有2种方法,例如saveUser()和saveEmail()(因为我将电子邮件存储在数据库中,以便以后发送它们-
像队列一样),我将在服务中创建一个方法saveUserAndSendEmail(User
user),该方法将是事务性的。此方法将在@Repository组件中分别调用saveUser和saveEmail(),因为它们处理数据库。因此,我会将它们放在@Repository组件中,以使用数据库处理的方法,然后在@Service组件中控制事务性。这样,控制器将只需要担心在需要时提供数据和调用数据的麻烦。但是我进行事务是因为在整个方法成功执行之前,我不希望在数据库中提交更改。
但这是我通常使用的样式,我并不是说这一定是要走的路。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)