为什么"SpringBootApplication"在自定义jpa"@Configurat



在我的library中,我有一些EntitiesRepositories,我想将它们包含在我的弹簧启动项目中。

这是@Confituration类的示例library

package com.mylibrary.config
@Configuration
@ComponentScan("com.mylibrary.service")
@EntityScan("com.mylibrary.repo")
@EnableJpaRepositories("com.mylibrary.repo")
@ConditionalOnClass(value = [DataSource::class])
open class MyCustomConfigFromLibrary

这样我尝试在我的弹簧启动项目中包含MyCustomConfigFromLibrary

package com.mainapp
@SpringBootApplication
@Import(value = [MyCustomConfigFromLibrary::class])
class Application

但是当我运行我的 spring-boot 应用程序时,它不需要扫描Repositories并从我的 spring-boot 项目本身Entities。它扫描其Components,但不扫描其RepositoriesEntitiesRepositoriesEntities它扫描的只是来自我的library.

因此,为了修复它,我找到了我do not喜欢的解决方案!我只是明确地将@EntityScan@EnableJpaRepositories添加到我的Application类中。

package com.mainapp
@SpringBootApplication
@Import(value = [MyCustomConfigFromLibrary::class])
@EntityScan
@EnableJpaRepositories
class Application

据我所知,如果您使用的是自己的自定义模式.sql和/或数据.sql那么 Spring Boot 不会检测到 JPA 存储库或实体。如果希望应用程序扫描这些类,请尝试从资源文件夹中删除自定义架构.sql/data.sql

在基于 JPA 的应用程序中,您不应该同时使用spring.jpa.hibernate.ddl-autoschema.sql。如果使用schema.sql,请确保禁用spring.jpa.hibernate.ddl-auto

参考资料 - https://walkingtechie.blogspot.com/2018/12/execute-schema-and-data-sql-on-startup-spring-boot.html

最新更新