java spring中的注解@Repository如何工作?

我有这样的代码:

@Repository

public interface EquipmentRepository extends JpaRepository<Equipment, Integer>{

Equipment findById(int id);

}

@Service

public 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

但是,根据您的情况,您还将扩展JpaRepositorySpring 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

回到顶部