我有时会发现 Spring 组件同时带有 @Service 和 @Repository 注释。像这样的事情:
@Service("carService")
@Repository
@Transactional
public class CarServiceImpl implements CarService {
...
}
或者类似这样的东西:
@Transactional
@Repository
public class EventService {
@Autowired
private EventRepository repository;
public EventEntity save(final EventEntity entity) {
return repository.save(entity);
}
public EventEntity findOne(final String idEvent) {
return repository.findOne(idEvent);
}
}
这样做似乎很方便,但是技术上的实现正确吗?
最佳答案
@Service
和 @Repository
均使用 @Component
进行元注释,这使得它们符合扫描条件。从 Spring 5.0 开始,@Service
不再添加进一步的逻辑,而 @Repository
可以向 Spring DAO 异常集添加异常转换(如果启用)。
但是,还值得注意的是,在您提供的示例中,拥有 EventService
比仅拥有 Spring Data 存储库没有任何优势,并且如果有其他逻辑,那么它就不会像存储库(EventRepository
依赖项是)。
tl;dr:两者都使用@Component
或@Service
,它们之间没有显着差异(@Component
正在变得越来越多)通常是因为这个)。
关于java - Spring - 使用@Service和@Repository注释同一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49034604/