【发布时间】:2021-12-24 14:24:13
【问题描述】:
在 Spring Boot 应用程序中,我们经常使用不同 @Service 类中的方法从数据库中读取用户。以以下为例:
@Transactional
public void someMethodInServiceA(long userId) {
User user = userRepository
.findById(userId)
.orElseThrow(() -> new EntityNotFoundException(String.format("User not found [id: %d]", userId)));
// do something with the user object...
}
@Transactional
public void anotherMethodInServiceB(long userId) {
User user = userRepository
.findById(userId)
.orElseThrow(() -> new EntityNotFoundException(String.format("User not found [id: %d]", userId)));
// do something else...
}
由于从数据库中获取 User 对象的代码几乎相同,我的第一个想法是将其重构为像 UserService 这样实现此方法的公共服务,以便用户只有一个地方实际已获取。
从架构的角度有什么建议吗?也许我还没有考虑过其他方法?
【问题讨论】:
标签: spring spring-boot spring-data