猿问

Spring JPA、Hibernate中哪个类负责扫描@Entity注解?

我正在寻找一个负责扫描 JPA、Hibernate 或 Spring 中所有用@Entity注释的类的类。

我想扩展该类并在扫描该类时添加一些逻辑。

我到处搜索(spring 文档、JPA、Hibernate 文档)但找不到它。


繁花不似锦
浏览 201回答 3
3回答

小怪兽爱吃肉

一旦 Spring boot 检测到您需要,JPA 存储库的自动配置就会启用。根据@JpaRepositoriesAutoConfiguration规范(重点是我的):Spring Data 的 JPA 存储库的自动配置。当上下文中配置了 DataSource 类型的 bean、Spring Data JPA JpaRepository 类型位于类路径上并且没有配置其他现有 JpaRepository 时激活。一旦生效,自动配置相当于使用 EnableJpaRepositories 注释启用 JPA 存储库。该配置类将在 Hibernate 自动配置后激活。要覆盖它,请显式添加@EnableJpaRepositories注释,但除了注释中定义的字段之外,您无法添加任何逻辑。

浮云间

无法帮助你负责扫描的native类,但是可以告诉你如何在你自己的类中进行扫描。该代码是从我的项目借用的 - 它可以公开每个实体的 id。您不必每次都向列表中添加新内容 - 很容易忘记这一步。您需要有一个扩展 RepositoryRestConfigurerAdapter 或 RepositoryRestMvcConfiguration 的配置,并添加一个方法,如下所示:@Overridepublic void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {&nbsp; &nbsp; // getting a list of all classes annotated with @Entity&nbsp; &nbsp; List<Class<?>> classes = CPScanner.scanClasses(new PackageNameFilter("ru.outofrange.*"),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; new ClassFilter().appendAnnotation(Entity.class));&nbsp; &nbsp; Class[] arrayClasses = new Class[classes.size()];&nbsp; &nbsp; for (int i = 0; i < classes.size(); i++) {&nbsp; &nbsp; &nbsp; &nbsp; arrayClasses[i] = classes.get(i);&nbsp; &nbsp; }&nbsp; &nbsp; config.exposeIdsFor(arrayClasses);}需要此依赖项:<dependency>&nbsp; &nbsp; <groupId>net.sf.corn</groupId>&nbsp; &nbsp; <artifactId>corn-cps</artifactId>&nbsp; &nbsp; <version>1.0.1</version></dependency>

慕田峪7331174

我认为这是一个非常广泛的问题,但您需要查看源代码才能理解。
随时随地看视频慕课网APP

相关分类

Java
我要回答