我正在学习如何构建JSF和Spring集成的webapp。我正在使用java配置进行配置。问题是@EnableJpaRepositories,我应该在这个注释中添加哪个包?包中包含实体类?还是配置类?要么?我可以将我的root包放入其中并让它自行搜索吗?
答案 0 :(得分:7)
EnableJpaRepositories - 仅用于存储库,不用于实体或配置。此注释的主要目标是查找所有存储库。
您可以通过几种方式配置jpa存储库(取决于您的项目中的包结构),
@EnableJpaRepositories
- 在这种情况下,spring会解析所有包以查找存储库。
@EnableJpaRepositories(basePackages="root package")
- 与...相同
@EnableJpaRepositories
@EnableJpaRepositories(basePackages="path.to.repositories.package")
- 在这种情况下,spring只解析'path.to.repositories.package'包和子包来查找存储库。
如果你有com.some.path.repositories
或com.some.path.dao
这样的包结构,你可以@EnableJpaRepositories(basePackages="com.some.path.dao or repositories")
如果你有更复杂的结构,例如com.some.path.domain1.repositories
,com.some.path.domain2.repositories
.... com.some.path.domainN.repositories
您可以使用配置@EnableJpaRepositories(basePackages="com.some.path")
或使用多组配置值配置(下一节),因为您需要找到所有子包的顶级包并将其用作basePackages。在许多情况下查找所有存储库的顶级公共basePackage可能与使用default / root package @EnableJpaRepositories
或者多组配置值@EnableJpaRepositories({“com.some.path.domain1.repositories”,“com.some.path.domain2.repositories”})如果你有几个包。在这里不需要使用普通的root包,但是如果你有10-20个单独的包,那么最好使用普通的包。
PS:@EnableJpaRepositories具有basePackages()属性的别名。允许更简洁的注释声明,例如:@EnableJpaRepositories(“org.my.pkg”)而不是@EnableJpaRepositories(basePackages =“org.my.pkg”)。