当前位置: 首页 > 面试题库 >

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

亢胤运
2023-03-14
问题内容

我有这样的代码:

资料库

@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



 类似资料:
  • 我的spring应用程序有点小问题。下面是我的代码: (存储库) 下面是我的简单服务类: 更新:配置

  • 问题内容: 我遇到了一个例子: 我很好奇如何获取集合,因为没有设置方法,而且它是私有的。 问题答案: Java允许上一个字段或方法的访问控制被关断(是的,有一个安全检查到第一通路)经由方法,其是反射框架(二者的一部分Field和从继承)。一旦发现并写入了该字段,其余的工作就变得很简单了。只是一个简单的编程问题。 分享

  • 我尝试对一个包含restclient的服务进行一个简单的测试。看来我没有成功地模仿。看起来代码得到的是真实数据,而不是模拟数据。任何人都可以帮我。 服务本身将如下所示:

  • 本文向大家介绍Java中注解的工作原理,包括了Java中注解的工作原理的使用技巧和注意事项,需要的朋友参考一下 自Java5.0版本引入注解之后,它就成为了Java平台中非常重要的一部分。开发过程中,我们也时常在应用代码中会看到诸如@Override,@Deprecated这样的注解。这篇文章中,我将向大家讲述到底什么是注解,为什么要引入注解,注解是如何工作的,如何编写自定义的注解(通过例子),什

  • 我有javaSpring启动应用程序。我想对经常读取的数据使用缓存。为此,我在我的jar中包含了以下依赖项 我还使用了@EnableCaching注释 使用@Cacheable注释和返回要缓存的数据的函数 但我仍然无法缓存数据。有什么我遗漏的吗?

  • 我一直在尝试将< code>webdriver注入到步骤中。我已经使用了这个说明,效果很好。 想法是将WebDriver作为服务注入到steps类中。在初始步骤,您需要添加以下依赖项。 依赖关系注入涉及三个主要类。在这里,我们逐一介绍它们。 BaseUtil BaseUtil是具有WebDriverof Selenium属性的类。这个类非常简单: 钩 钩子类包含之前和之后的