Spring - 使用@Service和@Repository注释同一个类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring - 使用@Service和@Repository注释同一个类相关的知识,希望对你有一定的参考价值。
我不时会发现使用@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);
}
}
做这样的事情似乎很方便,但技术上是否正确实施?
答案
@Service
和@Repository
都使用@Component
进行元注释,这使得它们有资格进行扫描。从Spring 5.0开始,@Service
不再添加逻辑,而@Repository
可以在启用时向Spring DAO异常集添加异常转换。
但是,值得注意的是,在您提供的示例中,使用EventService
而不是简单地拥有Spring Data存储库没有任何优势,并且如果存在其他逻辑,则它不能用作存储库(EventRepository
依赖项)。
tl; dr:在两者上使用@Component
或@Service
,它们之间没有显着差异(@Component
因此而变得更加平常)。
以上是关于Spring - 使用@Service和@Repository注释同一个类的主要内容,如果未能解决你的问题,请参考以下文章
用spring 注解注入;dao和service都为null,是啥原因?
Spring - 使用@Service和@Repository注释同一个类