@EnableJpaRepositories寻找哪个包?

New*_*bie 3 spring spring-java-config

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

xyz*_*xyz 9

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")或使用多组配置值configuretion(下一节),因为你有不同的独立的包,你需要找到顶包所有子包,并把它作为basePackages.在许多情况下,要查找所有存储库的顶级公共basePackage可能与使用default/root包相同@EnableJpaRepositories

或者,如果您有几个包,则可以使用多组配置值@EnableJpaRepositories({"com.some.path.domain1.repositories","com.some.path.domain2.repositories"}).在这不需要使用通用的根包,但如果你有10-20个单独的包,可能最好使用通用包.

PS:@EnableJpaRepositories具有basePackages()属性的别名.允许更简洁的注释声明,例如:@EnableJpaRepositories("org.my.pkg")而不是@EnableJpaRepositories(basePackages ="org.my.pkg").