我的spring boot应用程序中有一个知识库类。首先,我使用 import jdatetime
jalili_date = jdatetime.date(1396,2,30).togregorian()
gregorian_date = jdatetime.date.fromgregorian(day=19,month=5,year=2017)
对其进行了注释,然后我实现了@Repository
。现在我摆脱了注释,它仍然有效。
我看到JpaRepository
有JpaRepository
注释。
这是如何工作的?或者这应该不起作用,我的应用程序中发生了什么奇怪的事情?
答案 0 :(得分:10)
确实没有必要将@Repository
注释放在扩展JpaRepository
的接口上; Spring通过扩展其中一个预定义的Repository
接口来识别存储库。
@NoRepositoryBean
注释的目的是防止Spring将该特定接口本身视为存储库。 JpaRepository
接口有这个注释,因为它本身不是一个存储库,它本来是由你自己的存储库接口扩展的,那些是应该被接收的。
或者这应该不起作用,我的应用程序中出现了一些奇怪的东西?
它可以正常工作,你的应用程序中没有任何奇怪的东西。
答案 1 :(得分:1)
我在猜你用@EnableJpaRepositories
进行设置。这将扫描Spring Data repositories
,即使它们未使用@Repository
进行注释。
来自javadoc:
启用JPA存储库的注释。默认情况下,将扫描Spring Data存储库的带注释配置类的包。
您还可以指定basePackages
/ basePackageClasses
来更改默认值。
答案 2 :(得分:1)
不是强制性的。它将工作的原因是因为您将指定使用@EnableJpaRepositories("packagestoscan")
答案 3 :(得分:0)
我建议您使用@Repository类进行注释,例如:
@Repository
JpaRepositoryImpl implements JpaRepository
答案 4 :(得分:0)
使用spring数据jpa时,无需显式指定存储库。 spring data jpa会扫描扩展存储库的所有接口并自动生成实现。