Почему `SpringBootApplication` не сканирует `Объекты` и `репозитории` при пользовательском jpa `@Configuration`

#java #spring #spring-boot #kotlin

#java #весна #пружинный ботинок #kotlin

Вопрос:

У library меня есть некоторые Entities , Repositories которые я хочу включить в свой проект spring-boot.

Это пример @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 его в свой проект spring-boot

 package com.mainapp

@SpringBootApplication
@Import(value = [MyCustomConfigFromLibrary::class])
class Application
 

Но когда я запускаю свое приложение spring-boot, оно не хочет сканировать Repositories и Entities сам мой проект spring-boot. Он сканирует его Components , но не его Repositories и Entities . Repositories и Entities это сканы только с моего library .

Итак, чтобы исправить это, я нашел решение, которое мне do not нравится! Я просто явно добавляю @EntityScan и @EnableJpaRepositories в свой Application класс.

 package com.mainapp

@SpringBootApplication
@Import(value = [MyCustomConfigFromLibrary::class])
@EntityScan
@EnableJpaRepositories
class Application
 

Комментарии:

1. Вы можете попробовать добавить автоматическую настройку spring в свою библиотеку, а затем добавить ее в свой проект в качестве spring starter.

Ответ №1:

Насколько я знаю, если вы используете свой собственный пользовательский schema.sql и / или data.sql, то Spring Boot не обнаруживает репозитории или объекты JPA. Если вы хотите, чтобы ваше приложение сканировало эти классы, попробуйте удалить пользовательский schema.sql / data.sql из папки ресурсов.

В приложении на основе JPA вы не должны использовать как spring.jpa.hibernate.ddl-auto, так и schema.sql. Обязательно отключите spring.jpa.hibernate.ddl-auto, если вы используете schema.sql.

Ссылка — https://walkingtechie.blogspot.com/2018/12/execute-schema-and-data-sql-on-startup-spring-boot.html