java spring中的注解@Repository如何工作?
我有这样的代码:
@Repositorypublic interface EquipmentRepository extends JpaRepository<Equipment, Integer>{
Equipment findById(int id);
}
@Servicepublic class EquipmentServiceImpl implements EquipmentService {
@Autowired
EquipmentRepository equipmentRepository;
@Override
public Equipment findById(int id) {
return equipmentRepository.findById(id);
}
}
我不知道为什么我可以调用“ interface EquipmentRepository”方法。EquipmentRepository是一个接口,对吗?
回答:
Spring Repository负责将DAO导入DI容器,并将未检查的异常导入Spring DataAccessException
。Spring
Repository批注使用@Component批注进行元注释,以便将存储库类用于组件扫描。
实现诸如“数据访问对象”之类的传统Java
EE模式的团队也可以将这种构造型应用于DAO类,尽管在这样做之前应注意理解数据访问对象与DDD样式存储库之间的区别。此注释是通用的刻板印象,各个团队可以缩小其语义并适当使用。
DataAccessException
与一起使用时,这样注释的类可以进行Spring 翻译
PersistenceExceptionTranslationPostProcessor
。出于工具,方面等目的,还注释了带注释的类在整个应用程序体系结构中的作用。资料来源:JavaDoc
但是,根据您的情况,您还将扩展JpaRepository
Spring Data JPA的功能。Spring
Data自动提供常见CRUD操作的实现。在JpaRepository
扩展接口CrudRepository
,其已宣布对所有基本的CRUD操作的方法。
public interface EquipmentRepository extends JpaRepository<Account, Long> { … }
定义此接口有两个目的:
- 首先,通过扩展,
JpaRepository
我们将一堆通用的CRUD方法添加到我们的类型中,该方法允许保存设备,删除它们等等。 - 其次,这将允许Spring Data JPA存储库基础结构扫描该接口的类路径并为其创建Spring Bean。
该@EnableJpaRepositories
扫描下面的所有包com.acme.repositories
用于扩展接口JpaRepository
,并创建一个Spring
bean它由一个执行备份SimpleJpaRepository
(春季数据通过这个类提供CRUD库的默认imlpementations)。
因此,即使没有定义方法,也可以通过此设置进行粗体操作。
参考:https :
//docs.spring.io/spring-
data/jpa/docs/current/reference/html/#jpa.repositories
以上是 java spring中的注解@Repository如何工作? 的全部内容, 来源链接: utcz.com/qa/420403.html