我不时会发现使用@Service和@Repository注释的Spring组件。像这样:
@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);
}
}
做这样的事情似乎很方便,但技术上是否正确实施?
答案 0 :(得分:1)
@Service
和@Repository
都使用@Component
进行元注释,这使它们有资格进行扫描。从Spring 5.0开始,@Service
不再添加逻辑,而@Repository
可以在启用时向Spring DAO异常集添加异常转换。
但是,值得注意的是,在您提供的示例中,让EventService
仅仅拥有Spring Data存储库没有任何优势,并且如果有其他逻辑,然后它没有作为存储库运行(EventRepository
依赖项是)。
tl; dr:在两者上使用@Component
或@Service
,两者之间没有显着差异(@Component
因此而变得更加平常)。