我使用的是Spring Data JPA存储库(比如MyRepo extends JpaRepository),没有@Repository和@EnableJpaRepositories注解它也能工作。有人能解释一下为什么吗?
MyRepo extends JpaRepository
@Repository
@EnableJpaRepositories
8xiog9wr1#
您可能正在使用Sping Boot 。Spring Data 仓库通常从Repository或CrudRepository接口扩展。如果您使用自动配置,仓库将从包含您的主配置类(用@EnableAutoConfiguration或@SpringBootApplication标注的类)的包向下搜索。请查看Sping Boot 参考文档(v2.7.2)以了解更多详细信息。
r6vfmomb2#
您不需要@Repository来使用SpringDataJPA。扩展CrudRepository或JPARepository的接口即使不使用@Repository对其进行注解也可以工作。您需要使用此注解的核心原因是它使DAO层中抛出的未经检查的异常有资格被转换为SpringDataAccessException。反过来,这将更容易处理。这是使用@的重要方面资料档案库更多详细信息请参见此-〉https://www.youtube.com/watch?v=z2re1MfWtz0&list=PLO0KWyajXMh4fGMvAw1yQ1x7mWayRcmX3&index=8&t=0s
sqyvllje3#
有关更多信息,请查看这些用于自动配置Spring Data JPA存储库的类:
Jpa存储库自动配置注册器
文件:http://www.atetric.com/atetric/javadoc/org.springframework.boot/spring-boot-autoconfigure/1.2.0.RELEASE/org/springframework/boot/autoconfigure/data/jpa/JpaRepositoriesAutoConfigureRegistrar.html
@EnableJpaRepositories private static class EnableJpaRepositoriesConfiguration { }
3条答案
按热度按时间8xiog9wr1#
您可能正在使用Sping Boot 。
Spring Data 仓库通常从Repository或CrudRepository接口扩展。如果您使用自动配置,仓库将从包含您的主配置类(用@EnableAutoConfiguration或@SpringBootApplication标注的类)的包向下搜索。
请查看Sping Boot 参考文档(v2.7.2)以了解更多详细信息。
r6vfmomb2#
您不需要@Repository来使用SpringDataJPA。扩展CrudRepository或JPARepository的接口即使不使用@Repository对其进行注解也可以工作。您需要使用此注解的核心原因是它使DAO层中抛出的未经检查的异常有资格被转换为SpringDataAccessException。反过来,这将更容易处理。这是使用@的重要方面资料档案库
更多详细信息请参见此-〉https://www.youtube.com/watch?v=z2re1MfWtz0&list=PLO0KWyajXMh4fGMvAw1yQ1x7mWayRcmX3&index=8&t=0s
sqyvllje3#
有关更多信息,请查看这些用于自动配置Spring Data JPA存储库的类:
Jpa存储库自动配置注册器
文件:http://www.atetric.com/atetric/javadoc/org.springframework.boot/spring-boot-autoconfigure/1.2.0.RELEASE/org/springframework/boot/autoconfigure/data/jpa/JpaRepositoriesAutoConfigureRegistrar.html