我的Spring Boot应用程序中有一个存储库类。起初,我使用了@Repository
注解,然后实现了JpaRepository
。现在我摆脱了这个注解,它仍能正常工作。
我发现JpaRepository
有@NoRepositoryBean
注解。
这是如何工作的?或者这不应该起作用,我的应用程序出了问题吗?
我的Spring Boot应用程序中有一个存储库类。起初,我使用了@Repository
注解,然后实现了JpaRepository
。现在我摆脱了这个注解,它仍能正常工作。
我发现JpaRepository
有@NoRepositoryBean
注解。
这是如何工作的?或者这不应该起作用,我的应用程序出了问题吗?
在继承JpaRepository
接口的接口上放置@Repository
注解并不是必需的;Spring通过这些接口扩展了预定义的Repository
接口来识别存储库。
@NoRepositoryBean
注解的目的是防止Spring将特定的接口视为存储库。因为JpaRepository
接口本身并不是一个存储库,而是用于扩展自己的存储库接口,并且应该选择这些接口。
或者这样行不通,在我的应用程序中有一些奇怪的事情发生吗?
它按照预期工作,您的应用程序中没有任何奇怪的事情发生。
@Repository
注解。这个注解应该用于你自己定义的接口上。 - Jesper这不是强制性的。之所以会起作用,是因为您已经使用 @EnableJpaRepositories("packagestoscan")
指定了框架要查找存储库的包。
@EnableJpaRepositories
进行设置。即使没有使用@Repository
注释,它也会扫描Spring Data repositories
。您还可以指定启用JPA存储库的注释。默认情况下,将扫描注释配置类的包以查找Spring Data存储库。
basePackages
/basePackageClasses
来更改默认设置。@Repository
JpaRepositoryImpl implements JpaRepository