@EnableJpaRepositories寻找哪个包?

时间:2017-07-23 05:24:17

标签: spring spring-java-config

我正在学习如何构建JSF和Spring集成的webapp。我正在使用java配置进行配置。问题是@EnableJpaRepositories,我应该在这个注释中添加哪个包?包中包含实体类?还是配置类?要么?我可以将我的root包放入其中并让它自行搜索吗?

1 个答案:

答案 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.repositoriescom.some.path.dao这样的包结构,你可以@EnableJpaRepositories(basePackages="com.some.path.dao or repositories")

如果你有更复杂的结构,例如com.some.path.domain1.repositoriescom.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”)。