Sam*_*mir 12 java spring jpa spring-data-jpa spring-boot
我们可以通过这种方式声明存储库类
public interface DepartmentRepository extends JpaRepository<Department, Integer>
Run Code Online (Sandbox Code Playgroud)
这样
@Repository
public interface DepartmentRepository extends JpaRepository<Department, Integer>
Run Code Online (Sandbox Code Playgroud)
提到的这两种方法有什么区别。因为如果我们删除@Repository注释,那么代码将正常工作,那么有什么区别,任何人都可以解释一下吗?
Dar*_*the 11
虽然其他答案详细介绍了原型注释,但它们没有记录为什么不需要它,它是 Spring Boot 功能 - 而不是 Spring Framework。
使用 Spring Boot,它将自动扫描主 SpringBootApplication 类中的子包并检测存储库接口,并使用 Autoconfiguration(属于 SpringBootApplication 的一部分)为您创建 Bean。SpringBootApplication
Spring Data 存储库通常从 Repository 或 CrudRepository 接口扩展。如果您使用自动配置,则会从包含主配置类(用 @EnableAutoConfiguration 或 @SpringBootApplication 注解的类)的包中搜索存储库。
如果您没有使用 Spring Boot,或者存储库不在 Spring Boot 应用程序的包或子包中,则需要对其进行注释并扫描包或创建 bean。
Spring Data 可以创建各种风格的 @Repository 接口的实现。Spring Boot 会为您处理所有这些,只要这些 @Repositories 包含在 @EnableAutoConfiguration 类的同一包(或子包)中。
对于许多应用程序,您所需要做的就是将正确的 Spring Data 依赖项放在类路径上。JPA 有 spring-boot-starter-data-jpa,Mongodb 有 spring-boot-starter-data-mongodb 等。首先,创建一些存储库接口来处理 @Entity 对象。
Spring Boot 尝试根据它找到的 @EnableAutoConfiguration 猜测 @Repository 定义的位置。要获得更多控制,请使用 @EnableJpaRepositories 注释(来自 Spring Data JPA)。
有关此行为的更多信息,请参阅文档,例如对存储库的创建进行更多控制。
小智 0
摘自 spring 文档:
@Repository 注释是任何满足存储库角色或构造型(也称为数据访问对象或 DAO)的类的标记。该标记的用途之一是异常的自动翻译,如异常翻译中所述。
它主要用作构造型标记,但 @Repository 是 @Component 的特化,spring 使用它进行类路径扫描。
https://www.journaldev.com/21460/spring-repository-annotation
| 归档时间: |
|
| 查看次数: |
6381 次 |
| 最近记录: |