У меня есть класс репозитория для пакета:
com.repository
И я определил @ComponentScan("com.*")
в основном классе Spring Boot.
Однако при запуске приложения я получаю исключение
Рассмотрим определение bean-компонента типа 'com.repository.TopicRepository' в вашей конфигурации.
Ниже приведены классы:
TopicRepository
package com.repository;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import com.models.Topic;
@Repository
public interface TopicRepository extends CrudRepository<Topic,String>{
}
Приложение
package com.example.springboot.springboot.test;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication(scanBasePackages = "com.*")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
POM. xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.3.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.example.springboot</groupId>
<artifactId>springboot.test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot.test</name>
<description>Demo project for Spring Boot</description>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.197</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<properties>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
</properties>
Я уже попробовал @ComponentScan
. Если я изменю scanBasePackages
на "com.repository"
, он сможет каким-то образом забрать TopicRepository
вместе с другими Service and Controller
, что не должно быть так, поскольку они находятся в другой упаковке.
РЕДАКТИРОВАТЬ:
структура пакета
com.models: Модели
com.repository: Репозиторий
com.services: Сервисы
com.controllers: контроллеры
com.springboot.springboottest: основной класс